AUX-INF-111
aux_inf111_umsa_wiki
http://aux-inf111-umsa.shoutwiki.com/wiki/P%C3%A1gina_principal
MediaWiki 1.35.13
first-letter
Medio
Especial
Discusión
Usuario
Usuario discusión
AUX-INF-111
AUX-INF-111 discusión
Archivo
Archivo discusión
MediaWiki
MediaWiki discusión
Plantilla
Plantilla discusión
Ayuda
Ayuda discusión
Categoría
Categoría discusión
Módulo
Módulo discusión
Accesorio
Accesorio discusión
Accesorio definición
Accesorio definición discusión
Página principal
0
1
1
2014-02-16T01:55:37Z
MediaWiki default
30443056
wikitext
text/x-wiki
<big>Welcome to your new site!</big><br/>
This is your new site! Feel free to start editing right away!
f6aad8bc2928e71e9e507f8fe0955e0ab1782cc4
3
1
2014-02-16T02:24:17Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
1. [[Introducción a la programación]] (TODO: D'jalmar)
2. [[Programación Estructurada]] (TODO: D'jalmar)
3. [[Primer nivel de programación]] (TODO: Mauri)
4. [[Programación Modular]] (TODO: Mauri)
5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa)
8a72c4721928ca2e284216e4f18b58ebbb9cf10f
4
3
2014-02-16T02:25:18Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
1. [[Introducción a la programación]] (TODO: D'jalmar)
2. [[Programación Estructurada]] (TODO: D'jalmar)
3. [[Primer nivel de programación]] (TODO: Mauri)
4. [[Programación Modular]] (TODO: Mauri)
5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa)
--[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 02:25 16 feb 2014 (UTC)
a3f5554f7172df6694164e676e8ea43bfa2732b3
33
4
2014-02-18T00:49:32Z
Dajaman
3371526
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
1. [[Introducción a la programación]](aqui no encuentro nada XD)
2. [[Programación Estructurada]]
2.1 [[Condicionales]]
2.1.1 Operadores relacionales
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
3. [[Primer nivel de programación]] (TODO: Mauri)
4. [[Programación Modular]] (TODO: Mauri)
5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa)
--[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 02:25 16 feb 2014 (UTC)
13e68309f8decdda6c1a10085b30a23cadaa26a4
34
33
2014-02-18T01:57:13Z
Dajaman
3371526
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
1. [[Introducción a la programación]](aqui no encuentro nada XD)
2. [[Programación Estructurada]]
2.1 [[Condicionales]]
2.1.1 Operadores relacionales
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
2.2 Repetitivos
<p>
3n+1 </br>
1. leer n</br>
2. mostrar n</br>
3. if n == 1 entonces parar</br>
4. if n es impar </br>
n = 3 * n + 1</br>
5. else </br>
n = n / 2</br>
6. ir a 2</br>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
</p>
3. [[Primer nivel de programación]] (TODO: Mauri)
4. [[Programación Modular]] (TODO: Mauri)
5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa)
--[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 02:25 16 feb 2014 (UTC)
4c4148815e31f7b0ee8bed23c5a8553d6f076e47
35
34
2014-02-18T02:14:11Z
Dajaman
3371526
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
1. [[Introducción a la programación]](aqui no encuentro nada XD)
2. [[Programación Estructurada]]
2.1 [[Condicionales]]
2.1.1 Operadores relacionales
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
2.2 Repetitivos
<p>
3n+1 </br>
1. leer n</br>
2. mostrar n</br>
3. if n == 1 entonces parar</br>
4. if n es impar </br>
n = 3 * n + 1</br>
5. else </br>
n = n / 2</br>
6. ir a 2</br>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
</p>
3. [[Primer nivel de programación]] (TODO: Mauri)
4. [[Programación Modular]] (TODO: Mauri)
5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa)
5.Algo [[Matrices]]
- Contando manchas
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
000011</br>
000111</br>
110000</br>
000111</br>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
--[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 02:25 16 feb 2014 (UTC)
8d531c4fe2ef9f768074ee2d988a0e788fead12e
36
35
2014-02-18T02:16:28Z
Dajaman
3371526
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
1. [[Introducción a la programación]](aqui no encuentro nada XD)
2. [[Programación Estructurada]]
2.1 [[Condicionales]]
2.1.1 Operadores relacionales
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
2.2 Repetitivos
<p>
3n+1 </br>
1. leer n</br>
2. mostrar n</br>
3. if n == 1 entonces parar</br>
4. if n es impar </br>
n = 3 * n + 1</br>
5. else </br>
n = n / 2</br>
6. ir a 2</br>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
</p>
3. [[Primer nivel de programación]] (TODO: Mauri)
4. [[Programación Modular]] (TODO: Mauri)
5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa)
5.Algo [[Matrices]]
- Contando manchas
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
000011</br>
000111</br>
110000</br>
000111</br>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
--[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 02:25 16 feb 2014 (UTC)
63ee951acdb83c6060d879b72187da58c7664474
37
36
2014-02-18T12:03:47Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
1. [[Introducción a la programación]]
(aqui no encuentro nada XD) (descuida, yo tengo algunas "atrapadas" teóricas XD solo sigue el link:)
[[1.Problemas]]
2. [[Programación Estructurada]]
2.1 [[Condicionales]]
2.1.1 Operadores relacionales
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
2.2 Repetitivos
<p>
3n+1 </br>
1. leer n</br>
2. mostrar n</br>
3. if n == 1 entonces parar</br>
4. if n es impar </br>
n = 3 * n + 1</br>
5. else </br>
n = n / 2</br>
6. ir a 2</br>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
</p>
3. [[Primer nivel de programación]] (TODO: Mauri)
4. [[Programación Modular]] (TODO: Mauri)
5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa)
5.Algo [[Matrices]]
- Contando manchas
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
000011</br>
000111</br>
110000</br>
000111</br>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
--[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 02:25 16 feb 2014 (UTC)
53f6ee3a023637bc638666651ca1a29049246736
42
37
2014-02-18T12:42:21Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.1 [[Condicionales]] ===
==== 2.1.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.2 [[Repetitivos]] ===
<p>
3n+1 </br>
<nowiki>
1. leer n</br>
2. mostrar n</br>
3. if n == 1 entonces parar</br>
4. if n es impar </br>
n = 3 * n + 1</br>
5. else </br>
n = n / 2</br>
6. ir a 2</br> </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
</p>
:esto es un problema propuesto? o es un problema resuelto? [[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 12:42 18 feb 2014 (UTC)
3. [[Primer nivel de programación]] (TODO: Mauri)
4. [[Programación Modular]] (TODO: Mauri)
5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa)
5.Algo [[Matrices]]
- Contando manchas
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
000011</br>
000111</br>
110000</br>
000111</br>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
--[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 02:25 16 feb 2014 (UTC)
49f63b1036c71c1c1e7b816dce538fc82ebbe69d
43
42
2014-02-18T12:46:53Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.1 [[Condicionales]] ===
==== 2.1.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.2 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
8ec6d9ec8ac025ba0d675116132d8affd0872284
44
43
2014-02-18T12:55:25Z
Bengalaa
3371523
/* 2. Programación Estructurada */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6.
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
''Crafting in Minecraft''
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
8a038bd9fc03ccf480c1fe08bf8902d8f20364aa
45
44
2014-02-18T13:00:19Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
<nowiki>
CHICOS!!!! no solo de notación vivirá el hombre.
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea dar con la solución... aunque la solución sea únicamente una suma o una resta, o un if, hay que enseñarles a pensar... </nowiki>
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6.
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
''Crafting in Minecraft''
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
2c398fa4fc227c66179156aff06c2e34156c4177
46
45
2014-02-18T13:00:58Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
CHICOS!!!! no solo de notación vivirá el hombre.
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea dar con la solución... aunque la solución sea únicamente una suma o una resta, o un if, hay que enseñarles a pensar... [[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6.
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
''Crafting in Minecraft''
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
7cdea2f17687b0f127f75825d3058ed45dbc61dc
47
46
2014-02-18T13:02:02Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6.
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
''Crafting in Minecraft''
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
bd7021e6c7962766ac41ce65fda89d6bee67968b
48
47
2014-02-18T13:03:26Z
Bengalaa
3371523
/* 2.2 Secuencial */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6.
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft'''
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
22dc6f585526e35d389c5c17cd1e8f863d59dd77
50
48
2014-02-18T13:15:28Z
Bengalaa
3371523
/* 2.2 Secuencial */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!!)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft'''
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
15436e7c8a046ca41036c3cfe923ad0d848c347b
Usuario discusión:Bengalaa
3
2
2
2014-02-16T01:55:38Z
ShoutWiki
11
wikitext
text/x-wiki
Hi Bengalaa, thank you for choosing ShoutWiki to make your wiki.
We would suggest that you start your wiki off by doing these few basic things:
*Upload a logo. You can do this by uploading an image over [[:File:Wiki.png]]. (not available on some skins)
*Design your [[Main Page]]. The main page is likely the first thing users will see. It should be attractive and catch the eye.
*Start building content. All wikis need content to become the best they can be.
If you need help with making a logo, skin or favicon, please see [[s:w:logocreation|ShoutWiki's Logo Creation Wiki]].
If you need any help with making your wiki, feel free to contact [[s:ShoutWiki Staff|ShoutWiki staff]] either via their talk pages or via [[Special:Contact]]. Alternatively, you can talk to us, or other users, via [[s:ShoutWiki Hub:IRC|IRC]].
Thank you again for using ShoutWiki.
[[s:ShoutWiki Staff|ShoutWiki staff]] 01:55 16 feb 2014
3c0ab6b1bef1ea1b7c1fdb81b5e6f2565ad6967f
Segundo nivel de programación
0
3
5
2014-02-16T03:33:56Z
Bengalaa
3371523
Página creada con «5.1 [[Arreglos]] 5.2 [[Unidimensionales (Vectores)]] 5.3 [[Entrada / Salida de datos]] 5.4 [[Inversión, Sumatoria, promedio]] 5.5 [[Generación de vectores]] 5.6 Su...»
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Unidimensionales (Vectores)]]
5.3 [[Entrada / Salida de datos]]
5.4 [[Inversión, Sumatoria, promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
499d86673c8d695e49f48543fa574c3445001291
21
5
2014-02-16T23:10:02Z
Bengalaa
3371523
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
15d8f9b3ed29fb866b86f0faf9fd8aea86ede9e6
Archivo:Array.svg
6
4
6
2014-02-16T16:04:21Z
Bengalaa
3371523
Una representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
Es importante notar que los núm...
wikitext
text/x-wiki
Una representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2...
QUEST: Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura (el array tiene un tamaño de 7 números enteros).
a8cfa75c9077a7225dfa2ebac4bd5d724843c513
Arreglos
0
5
7
2014-02-16T16:06:46Z
Bengalaa
3371523
Página creada con «La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército...»
wikitext
text/x-wiki
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una variable. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro, como se muestra en la siguiente figura:
[[Archivo:Array.svg]]
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice
Todo este conjunto de datos, se identifica únicamente mediante un nombre, y un '''índice''' (¡sigue leyendo! más adelante explicaremos qué es un índice).
8daee184842c0fee99c54d7ace9d09bca02bd0de
8
7
2014-02-16T16:24:48Z
Bengalaa
3371523
wikitext
text/x-wiki
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una variable. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro, como se muestra en la '''Figura 1'''
[[Archivo:Array.svg|thumb|'''Figura 1''': Representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
<br/>Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2.
<br/> '''QUEST:''' Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura.]]
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice
Todo este conjunto de datos, se identifica únicamente mediante un nombre, y un '''índice''' (¡sigue leyendo! más adelante explicaremos qué es un índice).
db44fe8ecd28a50f4e701ff6cd8d285d6dda6d4f
9
8
2014-02-16T16:35:28Z
Bengalaa
3371523
wikitext
text/x-wiki
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una [[Variables|variable]]. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
[[Archivo:Array.svg|thumb|'''Figura 1''': Representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
<br/>Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2.
<br/> '''QUEST:''' Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura.]]
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro ('''Figura 1'''). Esta misma alineación, permite identificar a cada uno de los elementos del array con un '''índice''' ("index", en inglés) o '''clave''' ("key", en inglés), de tal forma que: el array se identifica con un nombre (como cualquier otra [[Variables|variable]]), y cada valor se identifica con su índice o clave.
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice.
== Problemas Resueltos ==
a2adfffbb15df011726fc340ef9a4e1b48b2e16c
10
9
2014-02-16T16:41:01Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:Array.svg|thumb|'''Figura 1''': Representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
<br/>Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2.
<br/> '''QUEST:''' Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura.]]
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una [[Variables|variable]]. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro ('''Figura 1'''). Esta misma alineación, permite identificar a cada uno de los elementos del array con un '''índice''' ("index", en inglés) o '''clave''' ("key", en inglés), de tal forma que: el array se identifica con un nombre (como cualquier otra [[Variables|variable]]), y cada valor se identifica con su índice o clave.
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice.
== Problemas Resueltos ==
b36d289122844dcaf6bff92a8594d5c157c0126f
18
10
2014-02-16T21:35:15Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:Array.svg|thumb|'''Figura 1''': Representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
<br/>Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2.
<br/> '''QUEST:''' Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura.]]
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una [[Variables|variable]]. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro ('''Figura 1'''). Esta misma alineación, permite identificar a cada uno de los elementos del array con un '''índice''' ("index", en inglés) o '''clave''' ("key", en inglés), de tal forma que: el array se identifica con un nombre (como cualquier otra [[Variables|variable]]), y cada valor se identifica con su índice o clave.
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice.
== Problema Resueltos ==
Un [[Puntero|puntero]] es una variable que apunta a alguna posición en la memoria, cuando decimos "el puntero está en ''x''", nos referimos a que "el puntero está apuntando a la posición de memoria en la que se encuentra ''x'' almacenado".
Los punteros juegan un papel muy importante en la forma en la que las computadoras manejan físicamente a los arreglos, porque es necesario saber en qué posición de la memoria está almacenado el primer dato, para que, cuando se identifiquen a sus datos de acuerdo a sus índices, solo haga falta tomar un puntero desde la posición inicial, y pedirle que se recorra ''n'' posiciones.
Imagina que eres una computadora, y ''alguien'' te informa que hay un arreglo cuyo primer dato está en la posición número ''a'', luego de cierto tiempo, te pide que le digas en qué posición de memoria se encuentra el dato que está ''b'' posiciones a la derecha del primer dato del arreglo... ¿En qué posición de memoria estaría este dato? (aunque, en realidad, las posiciones en la memoria se expresan mediante código hexagecimal, puedes asumir que las posiciones en la memoria se te darán en números enteros que caben en un <code>int</code>. Para plantear la solución, puedes usar pseudocódigo, o simplemente escribir una fórmula algebraica).
=== Solución ===
si el primer dato está en la posición ''a'', y el dato que te pidieron está ''b'' posiciones a la izquierda de ''a'', entonces el dato se encontrará en la siguiente posición de memoria...
==== Fórmula Algebráica ====
<code> solucion = a + b </code>
==== Pseudocódigo ====
<nowiki>
int cualPosicion(int posicionInicial, int posicionesARecorrer)
return posicionInicial + posicionesARecorrer</nowiki>
dc5574713c2535c430d476d9128a6d3c115b04c6
19
18
2014-02-16T23:02:54Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:Array.svg|thumb|'''Figura 1''': Representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
<br/>Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2.
<br/> '''QUEST:''' Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura.]]
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una [[Variables|variable]]. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro ('''Figura 1'''). Esta misma alineación, permite identificar a cada uno de los elementos del array con un '''índice''' ("index", en inglés) o '''clave''' ("key", en inglés), de tal forma que: el array se identifica con un nombre (como cualquier otra [[Variables|variable]]), y cada valor se identifica con su índice o clave.
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice.
== Problema Resuelto ==
Un [[Puntero|puntero]] es una variable que apunta a alguna posición en la memoria, cuando decimos "el puntero está en ''x''", nos referimos a que "el puntero está apuntando a la posición de memoria en la que se encuentra ''x'' almacenado".
Los punteros juegan un papel muy importante en la forma en la que las computadoras manejan físicamente a los arreglos, porque es necesario saber en qué posición de la memoria está almacenado el primer dato, para que, cuando se identifiquen a sus datos de acuerdo a sus índices, solo haga falta tomar un puntero desde la posición inicial, y pedirle que se recorra ''n'' posiciones.
Imagina que eres una computadora, y ''alguien'' te informa que hay un arreglo cuyo primer dato está en la posición número ''a'', luego de cierto tiempo, te pide que le digas en qué posición de memoria se encuentra el dato que está ''b'' posiciones a la derecha del primer dato del arreglo... ¿En qué posición de memoria estaría este dato? (aunque, en realidad, las posiciones en la memoria se expresan mediante código hexagecimal, puedes asumir que las posiciones en la memoria se te darán en números enteros que caben en un <code>int</code>. Para plantear la solución, puedes usar pseudocódigo, o simplemente escribir una fórmula algebraica).
=== Solución ===
si el primer dato está en la posición ''a'', y el dato que te pidieron está ''b'' posiciones a la izquierda de ''a'', entonces el dato se encontrará en la siguiente posición de memoria...
==== Fórmula Algebráica ====
<code> solucion = a + b </code>
==== Pseudocódigo ====
<nowiki>
int cualPosicion(int posicionInicial, int posicionesARecorrer)
return posicionInicial + posicionesARecorrer</nowiki>
== Problema Propuesto ==
En el problema anterior, se te pidió que indicaras la posición de la memoria en la que un puntero que comienza en un lugar ''a'' estaría al recorrerse ''b'' lugares. Esta vez es un poco distinto.
¿Cuántos bits tiene que recorrerse un puntero, si el tipo de dato que almacena el arreglo es de tipo <code>char</code>, y se te indica que el dato está ''x'' lugares hacia la izquierda de la posición inicial del puntero?
Al igual que el problema anterior, puedes expresar tu solución mediante una expresión algebraica, o mediante pseudocódigo.
HINT: lee el problema resuelto para entender qué es un puntero. Pregúntale a tu docente de INF-112 cuántos bits ocupa un char.
2dff20ef8e801e3a88082fa40617f565a0fb208b
20
19
2014-02-16T23:04:48Z
Bengalaa
3371523
/* Problema Propuesto */
wikitext
text/x-wiki
[[Archivo:Array.svg|thumb|'''Figura 1''': Representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
<br/>Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2.
<br/> '''QUEST:''' Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura.]]
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una [[Variables|variable]]. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro ('''Figura 1'''). Esta misma alineación, permite identificar a cada uno de los elementos del array con un '''índice''' ("index", en inglés) o '''clave''' ("key", en inglés), de tal forma que: el array se identifica con un nombre (como cualquier otra [[Variables|variable]]), y cada valor se identifica con su índice o clave.
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice.
== Problema Resuelto ==
Un [[Puntero|puntero]] es una variable que apunta a alguna posición en la memoria, cuando decimos "el puntero está en ''x''", nos referimos a que "el puntero está apuntando a la posición de memoria en la que se encuentra ''x'' almacenado".
Los punteros juegan un papel muy importante en la forma en la que las computadoras manejan físicamente a los arreglos, porque es necesario saber en qué posición de la memoria está almacenado el primer dato, para que, cuando se identifiquen a sus datos de acuerdo a sus índices, solo haga falta tomar un puntero desde la posición inicial, y pedirle que se recorra ''n'' posiciones.
Imagina que eres una computadora, y ''alguien'' te informa que hay un arreglo cuyo primer dato está en la posición número ''a'', luego de cierto tiempo, te pide que le digas en qué posición de memoria se encuentra el dato que está ''b'' posiciones a la derecha del primer dato del arreglo... ¿En qué posición de memoria estaría este dato? (aunque, en realidad, las posiciones en la memoria se expresan mediante código hexagecimal, puedes asumir que las posiciones en la memoria se te darán en números enteros que caben en un <code>int</code>. Para plantear la solución, puedes usar pseudocódigo, o simplemente escribir una fórmula algebraica).
=== Solución ===
si el primer dato está en la posición ''a'', y el dato que te pidieron está ''b'' posiciones a la izquierda de ''a'', entonces el dato se encontrará en la siguiente posición de memoria...
==== Fórmula Algebráica ====
<code> solucion = a + b </code>
==== Pseudocódigo ====
<nowiki>
int cualPosicion(int posicionInicial, int posicionesARecorrer)
return posicionInicial + posicionesARecorrer</nowiki>
== Problema Propuesto ==
En el problema anterior, se te pidió que indicaras la posición de la memoria en la que un puntero que comienza en un lugar ''a'' estaría al recorrerse ''b'' lugares. Esta vez es un poco distinto.
¿Cuántos bits tiene que recorrerse un puntero, si el dato que almacena el arreglo es de tipo <code>char</code>, y se te indica que el dato está ''x'' lugares hacia la izquierda de la posición inicial del puntero?
Al igual que el problema anterior, puedes expresar tu solución mediante una expresión algebraica, o mediante pseudocódigo.
HINT: lee el problema resuelto para entender qué es un puntero. Pregúntale a tu docente de INF-112 cuántos bits ocupa un char.
82d0b32e2c24d5d9eb364635f3e9c926fc838ac7
22
20
2014-02-17T00:48:32Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:Array.svg|thumb|'''Figura 1''': Representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
<br/>Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2.
<br/> '''QUEST:''' Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura.]]
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una [[Variables|variable]]. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro ('''Figura 1'''). Esta misma alineación, permite identificar a cada uno de los elementos del array con un '''índice''' ("index", en inglés) o '''clave''' ("key", en inglés), de tal forma que: el array se identifica con un nombre (como cualquier otra [[Variables|variable]]), y cada valor se identifica con su índice o clave.
== El tamaño de un Arreglo ==
El tamaño de un arreglo indica cuántos datos están contenidos dentro de éste.
Debido a la organización física de los datos de un arreglo, todo arreglo tiene un tamaño fijo. La mayoría de los lenguajes de programación proveen una librería que permite la utilización de arreglos con tamaño dinámico (es decir, el tamaño de estos arreglos puede incrementarse a medida que se necesita más espacio), pero esto no quiere decir que el arreglo "cresca", en realidad, todos estos lenguajes de programación "hacen trampa"...
Para incrementar el tamaño de un arreglo, lenguajes de programación como C++ y Java utilizan algo conocido como "relocalización de datos" ("data relocation" en inglés), digamos que tienes un arreglo de tamaño 10, y ya está lleno, pero quieres seguir ingresando datos, entonces, estos lenguajes de programación se dan la tarea de copiar estos 10 elementos a un arreglo nuevo de mayor tamaño.
¿Qué tan grande es el nuevo arreglo? eso depende del lenguaje de programación que utilices, Java, por ejemplo, usa un ''redimensionamiento geométrico con una razón de 3/2'', lo que quiere decir que el tamaño del nuevo arreglo se incrementará en 3/2. Talvez suene un poco confuso y abstracto, pero todo se aclarará en la siguiente [[Vector]]
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice.
== Problema Resuelto ==
Un [[Puntero|puntero]] es una variable que apunta a alguna posición en la memoria, cuando decimos "el puntero está en ''x''", nos referimos a que "el puntero está apuntando a la posición de memoria en la que se encuentra ''x'' almacenado".
Los punteros juegan un papel muy importante en la forma en la que las computadoras manejan físicamente a los arreglos, porque es necesario saber en qué posición de la memoria está almacenado el primer dato, para que, cuando se identifiquen a sus datos de acuerdo a sus índices, solo haga falta tomar un puntero desde la posición inicial, y pedirle que se recorra ''n'' posiciones.
Imagina que eres una computadora, y ''alguien'' te informa que hay un arreglo cuyo primer dato está en la posición número ''a'', luego de cierto tiempo, te pide que le digas en qué posición de memoria se encuentra el dato que está ''b'' posiciones a la derecha del primer dato del arreglo... ¿En qué posición de memoria estaría este dato? (aunque, en realidad, las posiciones en la memoria se expresan mediante código hexagecimal, puedes asumir que las posiciones en la memoria se te darán en números enteros que caben en un <code>int</code>. Para plantear la solución, puedes usar pseudocódigo, o simplemente escribir una fórmula algebraica).
=== Solución ===
si el primer dato está en la posición ''a'', y el dato que te pidieron está ''b'' posiciones a la izquierda de ''a'', entonces el dato se encontrará en la siguiente posición de memoria...
==== Fórmula Algebráica ====
<code> solucion = a + b </code>
==== Pseudocódigo ====
<nowiki>
int cualPosicion(int posicionInicial, int posicionesARecorrer)
return posicionInicial + posicionesARecorrer</nowiki>
== Problema Propuesto ==
En el problema anterior, se te pidió que indicaras la posición de la memoria en la que un puntero que comienza en un lugar ''a'' estaría al recorrerse ''b'' lugares. Esta vez es un poco distinto.
¿Cuántos bits tiene que recorrerse un puntero, si el dato que almacena el arreglo es de tipo <code>char</code>, y se te indica que el dato está ''x'' lugares hacia la izquierda de la posición inicial del puntero?
Al igual que el problema anterior, puedes expresar tu solución mediante una expresión algebraica, o mediante pseudocódigo.
HINT: lee el problema resuelto para entender qué es un puntero. Pregúntale a tu docente de INF-112 cuántos bits ocupa un char.
a13a1ff56ec4de82d9520bf0ab4144f89f7f325e
23
22
2014-02-17T00:51:07Z
Bengalaa
3371523
/* El tamaño de un Arreglo */
wikitext
text/x-wiki
[[Archivo:Array.svg|thumb|'''Figura 1''': Representación gráfica de cómo se almacenan (físicamente) los datos de un array en la computadora. El punto amarillo representa un [[Puntero]] indicando la posición en la memoria en la que comienza el arreglo.
<br/>Es importante notar que los números no se expresan en base 10 en la memoria, sino en base 2.
<br/> '''QUEST:''' Pregúntale a tu docente de INF-112 con cuántos 1's y 0's se representa un número entero en la memoria, y calcula cuánto espacio ocuparía el array representado en la figura.]]
La palabra "arreglo" fue transformada de la palabra inglesa "array" en inglés, un "array" se refiere a una secuencia ordenada, por ejemplo, cuando un oficial del ejército dice "battle array!", está dando a sus soldados la orden de ponerse en formación de batalla.
Pero en el mundo de la informática, cuando decimos "arreglo" ó "array", nos referimos a un '''conjunto de datos''', donde cada dato es una [[instancia]] de una [[Variables|variable]]. Todos estos datos están (físicamente) organizados en la memoria de la computadora, de una forma similar a un "battle array".
Es muy importante que recuerdes que un arreglo está compuesto de '''varios datos'''.
== Organización física de los datos de un Arreglo ==
Todos los datos de un arreglo, están "alineados" en tu memoria RAM, uno tras otro ('''Figura 1'''). Esta misma alineación, permite identificar a cada uno de los elementos del array con un '''índice''' ("index", en inglés) o '''clave''' ("key", en inglés), de tal forma que: el array se identifica con un nombre (como cualquier otra [[Variables|variable]]), y cada valor se identifica con su índice o clave.
== El tamaño de un Arreglo ==
El tamaño de un arreglo indica cuántos datos tiene.
Debido a la organización física de los datos de un arreglo, todo arreglo tiene un tamaño fijo. La mayoría de los lenguajes de programación proveen una librería que permite la utilización de arreglos con tamaño dinámico (es decir, el tamaño de estos arreglos puede incrementarse a medida que se necesita más espacio), pero esto no quiere decir que el arreglo "cresca", en realidad, todos estos lenguajes de programación "hacen trampa"...
Para incrementar el tamaño de un arreglo, lenguajes de programación como C++ y Java utilizan algo conocido como "relocalización de datos" ("data relocation" en inglés), digamos que tienes un arreglo de tamaño 10, y ya está lleno, pero quieres seguir ingresando datos, entonces, estos lenguajes de programación se dan la tarea de copiar estos 10 elementos a un arreglo nuevo de mayor tamaño.
¿Qué tan grande es el nuevo arreglo? eso depende del lenguaje de programación que utilices, Java, por ejemplo, usa un ''redimensionamiento geométrico con una razón de 3/2'', lo que quiere decir que el tamaño del nuevo arreglo se incrementará en 3/2. Talvez suene un poco confuso y abstracto, pero todo se aclarará en la siguiente [[Vector]]
== Definición formal de Arreglo ==
Es una [[Estructura de Datos]] que consiste en una colección de datos, cada uno de estos datos puede ser identificado mediante un índice.
== Problema Resuelto ==
Un [[Puntero|puntero]] es una variable que apunta a alguna posición en la memoria, cuando decimos "el puntero está en ''x''", nos referimos a que "el puntero está apuntando a la posición de memoria en la que se encuentra ''x'' almacenado".
Los punteros juegan un papel muy importante en la forma en la que las computadoras manejan físicamente a los arreglos, porque es necesario saber en qué posición de la memoria está almacenado el primer dato, para que, cuando se identifiquen a sus datos de acuerdo a sus índices, solo haga falta tomar un puntero desde la posición inicial, y pedirle que se recorra ''n'' posiciones.
Imagina que eres una computadora, y ''alguien'' te informa que hay un arreglo cuyo primer dato está en la posición número ''a'', luego de cierto tiempo, te pide que le digas en qué posición de memoria se encuentra el dato que está ''b'' posiciones a la derecha del primer dato del arreglo... ¿En qué posición de memoria estaría este dato? (aunque, en realidad, las posiciones en la memoria se expresan mediante código hexagecimal, puedes asumir que las posiciones en la memoria se te darán en números enteros que caben en un <code>int</code>. Para plantear la solución, puedes usar pseudocódigo, o simplemente escribir una fórmula algebraica).
=== Solución ===
si el primer dato está en la posición ''a'', y el dato que te pidieron está ''b'' posiciones a la izquierda de ''a'', entonces el dato se encontrará en la siguiente posición de memoria...
==== Fórmula Algebráica ====
<code> solucion = a + b </code>
==== Pseudocódigo ====
<nowiki>
int cualPosicion(int posicionInicial, int posicionesARecorrer)
return posicionInicial + posicionesARecorrer</nowiki>
== Problema Propuesto ==
En el problema anterior, se te pidió que indicaras la posición de la memoria en la que un puntero que comienza en un lugar ''a'' estaría al recorrerse ''b'' lugares. Esta vez es un poco distinto.
¿Cuántos bits tiene que recorrerse un puntero, si el dato que almacena el arreglo es de tipo <code>char</code>, y se te indica que el dato está ''x'' lugares hacia la izquierda de la posición inicial del puntero?
Al igual que el problema anterior, puedes expresar tu solución mediante una expresión algebraica, o mediante pseudocódigo.
HINT: lee el problema resuelto para entender qué es un puntero. Pregúntale a tu docente de INF-112 cuántos bits ocupa un char.
be08816b6e4d31d6cf2def12f1047fa5615b8239
Instancia
0
6
11
2014-02-16T16:57:19Z
Bengalaa
3371523
Página creada con «(barbarismo de "instance of" en inglés). Este termino se abarcará profundamente en la materia INF-121 (Algoritmos y Programación), en la que se hablará de Programació...»
wikitext
text/x-wiki
(barbarismo de "instance of" en inglés).
Este termino se abarcará profundamente en la materia INF-121 (Algoritmos y Programación), en la que se hablará de Programación Orientada a Objetos (POO) ("Object Oriented Programming (OOP)" en inglés)
bb8e74ad0aa6ba1074519a2760953a70f88328d2
13
11
2014-02-16T17:24:10Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:Declaracion-de-variables.svg|thumb|'''Figura 1: Declaración de variables''']]
(barbarismo de "instance of" en inglés).
Este termino se abarcará profundamente en la materia INF-121 (Algoritmos y Programación), en la que se hablará de Programación Orientada a Objetos (POO) ("Object Oriented Programming (OOP)" en inglés).
<code>
int x = 5
</code>
Esta instrucción se compone de varias partes (Figura 1)
a9a9a3f144cffaced9a7f3088547764483486af1
15
13
2014-02-16T19:10:32Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:Declaracion-de-variables.svg|thumb|'''Figura 1: Declaración de variables''']]
(barbarismo de "instance of" en inglés).
Este termino se abarcará profundamente en la materia INF-121 (Algoritmos y Programación), en la que se hablará de Programación Orientada a Objetos (POO) ("Object Oriented Programming (OOP)" en inglés).
<code>
int x = 5
</code>
Esta instrucción se compone de varias partes (Figura 1), el tipo de variable, es de especial interés para entender "la instanciación" de variables, imagina que la computadora tiene varios "moldes" para crear las variables, entre esos moldes está: el molde para hacer números enteros, el molde para hacer números de punto flotante, el molde para hacer characters e incluso el molde para hacer cadenas de texto!
Cuando declaramos el tipo de variable (Figura 1), le decimos a la computadora que "haga" una variable a partir del molde de números enteros, y lo que la computadora nos devuelve (a lo que nosotros le llamamos "la variable <code>x</code>"), a eso le llamamos "instancia de un <code>int</code>", es decir, no estamos hablando del molde, estamos hablando de la variable que ha sido hecha con este molde.
¿Pero cuál es la diferencia entre el molde y la variable? formalmente, al molde se le llama clase, y no guarda valores, solo es un modelo, y a la variable se le llama objeto, y el objeto sí guarda valores. Si quieres saber más, te recomiendo que googlees "introducción a POO"
7ba97cd6680d6312f36b428ff0ee150e0311962c
Archivo:Declaracion-de-variables.svg
6
7
12
2014-02-16T17:17:11Z
Bengalaa
3371523
Partes de la declaración de varibles
wikitext
text/x-wiki
Partes de la declaración de varibles
fcbdda7c3c1f38d72f5a7ed74d4c3b41e8c2efd1
14
12
2014-02-16T18:53:31Z
Bengalaa
3371523
Bengalaa subió una nueva versión de «[[Archivo:Declaracion-de-variables.svg]]»
wikitext
text/x-wiki
Partes de la declaración de varibles
fcbdda7c3c1f38d72f5a7ed74d4c3b41e8c2efd1
Estructura de Datos
0
8
16
2014-02-16T19:36:21Z
Bengalaa
3371523
Página creada con «("Data Structures" en inglés) Este tema será tocado a profundidad en la materia INF-131: Estructuras de Datos y Algoritmos. Pero, a grandes razgos, son variables que al...»
wikitext
text/x-wiki
("Data Structures" en inglés)
Este tema será tocado a profundidad en la materia INF-131: Estructuras de Datos y Algoritmos.
Pero, a grandes razgos, son variables que almacenan varios datos en ellas.
7e18a9dc81aea80df9ae9b98c86d6a0829eb8d07
17
16
2014-02-16T19:46:21Z
Bengalaa
3371523
wikitext
text/x-wiki
("Data Structures" en inglés)
Este tema será tocado a profundidad en la materia INF-131: Estructuras de Datos.
Pero, a grandes razgos, son variables que almacenan varios datos en ellas.
46e8bd871e1bd6e222ba4f6740580a548d71774e
Archivo:Vector-index.svg
6
9
24
2014-02-17T01:58:49Z
Bengalaa
3371523
Una descripción gráfica de cómo se invocan los índices en un vector.
wikitext
text/x-wiki
Una descripción gráfica de cómo se invocan los índices en un vector.
2e7de62f1764a5bb94a690685c7633210f3afbde
25
24
2014-02-17T02:05:42Z
Bengalaa
3371523
Bengalaa subió una nueva versión de «[[Archivo:Vector-index.svg]]»
wikitext
text/x-wiki
Una descripción gráfica de cómo se invocan los índices en un vector.
2e7de62f1764a5bb94a690685c7633210f3afbde
Archivo:Vector-grafico.svg
6
10
26
2014-02-17T02:27:01Z
Bengalaa
3371523
Notación gráfica de un vector
wikitext
text/x-wiki
Notación gráfica de un vector
d58406cef3746c9d36958904455976cda783fec4
27
26
2014-02-17T02:28:43Z
Bengalaa
3371523
Bengalaa subió una nueva versión de «[[Archivo:Vector-grafico.svg]]»
wikitext
text/x-wiki
Notación gráfica de un vector
d58406cef3746c9d36958904455976cda783fec4
Vector
0
11
28
2014-02-17T02:29:00Z
Bengalaa
3371523
Página creada con «[[Archivo:vector-index.svg|thumb|200px|'''Figura 1:''' Los índices en un vector]] En inglés también se dice "Vector", y también se conoce como "Arreglo Unidimensional" ...»
wikitext
text/x-wiki
[[Archivo:vector-index.svg|thumb|200px|'''Figura 1:''' Los índices en un vector]]
En inglés también se dice "Vector", y también se conoce como "Arreglo Unidimensional" (en inglés: "Unidimentional Array").
Ahora que ya sabes lo que es un arreglo (o array), es hora de dar un temerario paso al frente y adentrarnos en el mundo de los vectores.
Un vector es un [[arreglo]], en el cuál, cada uno de sus datos tiene un índice representado por un número entero, este número comienza en el 0. Hay algunos libros que enumeran los datos de un vector mediante números que comienzan en 1, en vez de 0, pero siempre que este sea el caso, el libro dirá "un arreglo cuyos índices comienzan en 1" (en inglés: "a 1-based-index array" o simplemente "a 1-based array").
Puedes pensar en un vector como un montón de datos en fila india. el ''índice'' de cada dato está dado por la posición que este dato ocupa dentro de la fila. El primer dato de la fila tiene índice 0, el segundo tiene índice 1, el tercero tiene índice 2, y así sucesivamente. De tal forma que puedes gritar el índice de cualquier dato, y el dato te responderá su valor (Figura 1).
== Notación ==
=== Representación Gráfica ===
[[Archivo:vector-grafico.svg|thumb|'''Figura 2: ''' Notación gráfica de un vector
Muchos libros usan una tabla de una fila para representar un vector (Figura 2), cada celda representa un dato, y las celdas están enumeradas desde el 0 en adelante.
163b9844527425433febb90d240f18cf80c23c2e
29
28
2014-02-17T02:29:12Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:vector-index.svg|thumb|200px|'''Figura 1:''' Los índices en un vector]]
En inglés también se dice "Vector", y también se conoce como "Arreglo Unidimensional" (en inglés: "Unidimentional Array").
Ahora que ya sabes lo que es un arreglo (o array), es hora de dar un temerario paso al frente y adentrarnos en el mundo de los vectores.
Un vector es un [[arreglo]], en el cuál, cada uno de sus datos tiene un índice representado por un número entero, este número comienza en el 0. Hay algunos libros que enumeran los datos de un vector mediante números que comienzan en 1, en vez de 0, pero siempre que este sea el caso, el libro dirá "un arreglo cuyos índices comienzan en 1" (en inglés: "a 1-based-index array" o simplemente "a 1-based array").
Puedes pensar en un vector como un montón de datos en fila india. el ''índice'' de cada dato está dado por la posición que este dato ocupa dentro de la fila. El primer dato de la fila tiene índice 0, el segundo tiene índice 1, el tercero tiene índice 2, y así sucesivamente. De tal forma que puedes gritar el índice de cualquier dato, y el dato te responderá su valor (Figura 1).
== Notación ==
=== Representación Gráfica ===
[[Archivo:vector-grafico.svg|thumb|'''Figura 2: ''' Notación gráfica de un vector]]
Muchos libros usan una tabla de una fila para representar un vector (Figura 2), cada celda representa un dato, y las celdas están enumeradas desde el 0 en adelante.
d42ba0f4230100a7274abf060ea74f41058f0954
30
29
2014-02-17T02:30:14Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:vector-index.svg|thumb|200px|'''Figura 1:''' Los índices en un vector]]
En inglés también se dice "Vector", y también se conoce como "Arreglo Unidimensional" (en inglés: "Unidimentional Array").
Ahora que ya sabes lo que es un arreglo (o array), es hora de dar un temerario paso al frente y adentrarnos en el mundo de los vectores.
Un vector es un [[arreglo]], en el cuál, cada uno de sus datos tiene un índice representado por un número entero, este número comienza en el 0. Hay algunos libros que enumeran los datos de un vector mediante números que comienzan en 1, en vez de 0, pero siempre que este sea el caso, el libro dirá "un arreglo cuyos índices comienzan en 1" (en inglés: "a 1-based-index array" o simplemente "a 1-based array").
Puedes pensar en un vector como un montón de datos en fila india. el ''índice'' de cada dato está dado por la posición que este dato ocupa dentro de la fila. El primer dato de la fila tiene índice 0, el segundo tiene índice 1, el tercero tiene índice 2, y así sucesivamente. De tal forma que puedes gritar el índice de cualquier dato, y el dato te responderá su valor (Figura 1).
== Notación ==
=== Representación Gráfica ===
[[Archivo:Vector-grafico.svg|thumb|'''Figura 2: ''' Notación gráfica de un vector|200px]]
Muchos libros usan una tabla de una fila para representar un vector (Figura 2), cada celda representa un dato, y las celdas están enumeradas desde el 0 en adelante.
c21289c278df893664b11a248cc477bfb39efbde
32
30
2014-02-17T11:20:00Z
Bengalaa
3371523
wikitext
text/x-wiki
[[Archivo:vector-index.svg|thumb|200px|'''Figura 1:''' Los índices en un vector]]
En inglés también se dice "Vector", y también se conoce como "Arreglo Unidimensional" (en inglés: "Unidimentional Array").
Ahora que ya sabes lo que es un arreglo (o array), es hora de dar un temerario paso al frente y adentrarnos en el mundo de los vectores.
Un vector es un [[arreglo]], en el cuál, cada uno de sus datos tiene un índice representado por un número entero, este número comienza en el 0. Hay algunos libros que enumeran los datos de un vector mediante números que comienzan en 1, en vez de 0, pero siempre que este sea el caso, el libro dirá "un arreglo cuyos índices comienzan en 1" (en inglés: "a 1-based-index array" o simplemente "a 1-based array").
Puedes pensar en un vector como un montón de datos en fila india. el ''índice'' de cada dato está dado por la posición que este dato ocupa dentro de la fila. El primer dato de la fila tiene índice 0, el segundo tiene índice 1, el tercero tiene índice 2, y así sucesivamente. De tal forma que puedes gritar el índice de cualquier dato, y el dato te responderá su valor (Figura 1).
== Notación ==
=== Representación Gráfica ===
[[Archivo:Vector-grafico.svg|thumb|'''Figura 2: ''' Notación gráfica de un vector|200px]]
[[Archivo:9-fingers.svg|thumb|'''Figura 3: ''' Los programadores tenemos 9 dedos XD]]
Muchos libros usan una tabla de una fila para representar un vector (Figura 2), cada celda representa un dato, y las celdas están enumeradas desde el 0 en adelante.
25bdb553eccdfdcd27901c86f74912a6a19d2d95
Archivo:9-fingers.svg
6
12
31
2014-02-17T11:18:53Z
Bengalaa
3371523
Los programadores tenemos 9 dedos XD
Para explicar por qué los arrays comienzan en el índice 0
wikitext
text/x-wiki
Los programadores tenemos 9 dedos XD
Para explicar por qué los arrays comienzan en el índice 0
d4c2fc226855140621f6304cfe602cc334947f3f
1.Problemas
0
13
38
2014-02-18T12:12:55Z
Bengalaa
3371523
Página creada con «(Ninguna de estas es de jueces virtuales) ¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' qu...»
wikitext
text/x-wiki
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
(5.1) 5 + 10 * 3 / 4 * (2 + 1) MODULO 5
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso).
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") || (nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") && (...) (¡completa esta sentencia para ganar puntos extra!)
fef2397f22de7dee9ee9aa6129e510e91ce072b2
39
38
2014-02-18T12:29:58Z
Bengalaa
3371523
wikitext
text/x-wiki
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
(5.1) 5 + 10 * 3 / 4 * (2 + 1) MODULO 5
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás?
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
b9ed3edda4c0a4b7c78f4130089103e322e92fe7
40
39
2014-02-18T12:30:38Z
Bengalaa
3371523
wikitext
text/x-wiki
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
(5.1) 5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás?
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
13c659fe7f6dd0f0e3a1aa2ece7e0305f0023ab5
41
40
2014-02-18T12:31:07Z
Bengalaa
3371523
wikitext
text/x-wiki
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás?
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
c352acec1cd5a46a5427eef3e7419dc34dd9f0ce
Respuestas a Crafting in Minecraft
0
14
49
2014-02-18T13:03:49Z
Bengalaa
3371523
Página creada con « <nowiki> a) min(x/2, y/3) b) ¿x - (min(x/2, y/3)*2) != 0? && ¿y - (min(x/2, y/3)*3) != 0? c) x - (min(x/2, y/3)*2) + y - (min(x/2, y/3)*3) </nowiki>»
wikitext
text/x-wiki
<nowiki>
a) min(x/2, y/3)
b) ¿x - (min(x/2, y/3)*2) != 0? && ¿y - (min(x/2, y/3)*3) != 0?
c) x - (min(x/2, y/3)*2) + y - (min(x/2, y/3)*3) </nowiki>
bd8aefb9f08715d563c328add1359ed419a45cbd
Archivo:Minecraft-pickaxe.png
6
15
51
2014-02-18T21:49:46Z
Bengalaa
3371523
picota de piedra de minecraft.
wikitext
text/x-wiki
picota de piedra de minecraft.
f2465913e31a0c8939f7e09329e5d21197cb8dfb
Página principal
0
1
52
50
2014-02-18T21:50:32Z
Bengalaa
3371523
/* 2.2 Secuencial */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!!)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
eb98b3c8124303ec5896174e9c5677f172ea2869
53
52
2014-02-18T22:11:28Z
Bengalaa
3371523
/* 2.4 Repetitivos */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!!)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
51a422e2cee7e51ef9d4e8174b6b1733780c6e84
54
53
2014-02-18T22:17:18Z
Bengalaa
3371523
/* 2.3 Condicionales */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!!)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
==== 2.3.1 Operadores relacionales ====
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
c1c8c0bc80e2882ad3341f2c8a676df5b084ba81
55
54
2014-02-18T22:17:48Z
Bengalaa
3371523
/* 2.3.1 Operadores relacionales */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!!)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
7a40e74479dd94cdeceed6cbd39f53e6edb34645
56
55
2014-02-18T22:41:48Z
Bengalaa
3371523
/* 4. Programación Modular (TODO: Mauri) */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!!)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
66912b7a26ddf5c6cd71270c989bc4fb6d601f52
57
56
2014-02-18T22:43:24Z
Bengalaa
3371523
/* 2.2 Secuencial */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿cuántos años de humano tiene un perro viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
9d4f50aad17b3bf2cc4a624ce777b8821e7b4a38
58
57
2014-02-18T22:44:19Z
Bengalaa
3371523
/* Problemas Propuestos */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
8b54ff9e4da54d089c595c318a0e456b494a1314
59
58
2014-02-19T00:26:14Z
Bengalaa
3371523
/* 4.6 Cadenas */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
=== 2.2 [[Secuencial]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 2.3 [[Condicionales]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 2.4 [[Repetitivos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
52f0dadb254387a15ef9d7cfbc0a8bbd9ebdc949
60
59
2014-02-19T01:48:11Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
== 3.1 [[Algoritmos Secuenciales]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 3.2 [[Algoritmos Condicionados]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 2.4 [[Algoritmos Iterativos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
a4d4b0f903f6c4c7a573874b4c956aaf89753439
61
60
2014-02-19T01:49:48Z
Bengalaa
3371523
/* 3.1 Algoritmos Secuenciales = */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
=== 3.1 [[Algoritmos Secuenciales]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 3.2 [[Algoritmos Condicionados]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 2.4 [[Algoritmos Iterativos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
----
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
e207ecd300d161f3bd1e34bcf40e0df31a365ff8
62
61
2014-02-19T02:56:39Z
Bengalaa
3371523
/* 2.4 Algoritmos Iterativos */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
=== 3.1 [[Algoritmos Secuenciales]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 3.2 [[Algoritmos Condicionados]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== 3.3.2 Series ====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
----
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
961828bd0713712632ca07e035519149dd7d56fc
63
62
2014-02-19T03:29:20Z
Bengalaa
3371523
/* 3.3 Algoritmos Iterativos */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
=== 3.1 [[Algoritmos Secuenciales]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 3.2 [[Algoritmos Condicionados]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== 3.3.2 Series ====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo = 1.61803398874989484820458683436563811772030917980576286213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
----
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
28de0cf6c0c797937348e60266ee515282e352d4
64
63
2014-02-19T03:42:06Z
Bengalaa
3371523
/* 3.3 Algoritmos Iterativos */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
=== 3.1 [[Algoritmos Secuenciales]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 3.2 [[Algoritmos Condicionados]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== 3.3.2 Series ====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
LUGAR: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
----
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
ba7bc32502a24246eb6a80e5a8017a4fb706bf23
65
64
2014-02-19T03:44:22Z
Bengalaa
3371523
/* 3.3.2 Series */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== 1. [[Introducción a la programación]] ==
=== Problemas Propuestos ===
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
== 2. [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== 3. [[Primer nivel de programación]] (TODO: Mauri) ==
=== 3.1 [[Algoritmos Secuenciales]] ===
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)
Prerrequisitos: 2.2 (todos los niveles)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
(no es del uva)
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
=== 3.2 [[Algoritmos Condicionados]] ===
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== 3.3.2 Series ====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1. 2, 3, 5, 7, 11, ... son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
----
== 4. [[Programación Modular]] (TODO: Mauri) ==
=== 4.6 Cadenas ===
''':-) INFOAMIGOS :)'''
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
== 5. [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
=== Problemas Propuestos ===
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
43a9875da3ea64fbaf85d82eff2a7af70a9d8ae2
70
65
2014-02-19T10:16:12Z
Bengalaa
3371523
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== [[Introducción a la programación]] ==
(7 ejercicios: completo, pero faltan algunos ejercicios de relleno).
== [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== [[Primer nivel de programación]] (TODO: Mauri) ==
== [[Programación Modular]] (TODO: Mauri) ==
== [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
dcc1cfc4f2e68908be963daa2447d014fff8e25f
71
70
2014-02-19T10:18:55Z
Bengalaa
3371523
/* Primer nivel de programación (TODO: Mauri) */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== [[Introducción a la programación]] ==
(7 ejercicios: completo, pero faltan algunos ejercicios de relleno).
== [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== [[Primer nivel de programación]] (TODO: Mauri) ==
12 ejercicios (contando incisos de cada ejercicio). FALTAN EJERCICIOS PARA ALGUNAS SECCIONES
== [[Programación Modular]] (TODO: Mauri) ==
== [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
5bdf993697ef3dae7cb8fb830198866055eed571
72
71
2014-02-19T10:19:49Z
Bengalaa
3371523
/* Programación Modular (TODO: Mauri) */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== [[Introducción a la programación]] ==
(7 ejercicios: completo, pero faltan algunos ejercicios de relleno).
== [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== [[Primer nivel de programación]] (TODO: Mauri) ==
12 ejercicios (contando incisos de cada ejercicio). FALTAN EJERCICIOS PARA ALGUNAS SECCIONES
== [[Programación Modular]] (TODO: Mauri) ==
2 ejercicios fáciles hasta ahora... FALTA MUCHO
== [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
855228dd7dfb6f92838ae3470fbfb38eb45a9295
73
72
2014-02-19T10:20:42Z
Bengalaa
3371523
/* Segundo nivel de programación (TODO: Arun y Bengalaa) */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== [[Introducción a la programación]] ==
(7 ejercicios: completo, pero faltan algunos ejercicios de relleno).
== [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== [[Primer nivel de programación]] (TODO: Mauri) ==
12 ejercicios (contando incisos de cada ejercicio). FALTAN EJERCICIOS PARA ALGUNAS SECCIONES
== [[Programación Modular]] (TODO: Mauri) ==
2 ejercicios fáciles hasta ahora... FALTA MUCHO
== [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
1 ejercicio difícil... FALTA MUCHO.
db1ce61c398c82e164dec3e399185c881ccc13bd
86
73
2014-02-19T14:22:05Z
Bengalaa
3371523
/* Primer nivel de programación (TODO: Mauri) */
wikitext
text/x-wiki
<big>Contenido Analítico de la materia INF-111</big><br/>
Por qué no usan las herramientas de wikimedia para edición? D:
'''CHICOS!!!! no solo de notación vivirá el hombre.'''
no tengan miedo de poner problemas sencillos, en los que lo más difícil sea
dar con la solución... aunque la solución sea únicamente una suma o una resta,
o un if, hay que enseñarles a pensar...
[[Usuario:Bengalaa|Bengalaa]] ([[Usuario discusión:Bengalaa|discusión]]) 13:00 18 feb 2014 (UTC)
== [[Introducción a la programación]] ==
(7 ejercicios: completo, pero faltan algunos ejercicios de relleno).
== [[Programación Estructurada]] ==
Esta sección es solo teoría o_O pensaré en los ejercicios después, cuando no esté inspirada...
== [[Primer nivel de programación]] (TODO: Mauri) ==
Faltan lotes y descomposición.
== [[Programación Modular]] (TODO: Mauri) ==
2 ejercicios fáciles hasta ahora... FALTA MUCHO
== [[Segundo nivel de programación]] (TODO: Arun y Bengalaa) ==
1 ejercicio difícil... FALTA MUCHO.
1e733c65d0e85998fd46d33702a4da3bf28f5dc3
Introducción a la programación
0
16
66
2014-02-19T09:55:35Z
Bengalaa
3371523
Página creada con «== Guía de Ejercicios == (Ninguna de estas es de jueces virtuales) ¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritm...»
wikitext
text/x-wiki
== Guía de Ejercicios ==
(Ninguna de estas es de jueces virtuales)
¿Haz jugado alguna vez Risk, o monopolio, o lotería, o cualquier juego de mesa? realiza un ''algoritmo en lenguaje natural'' que explique cómo jugar algún juego de mesa.
NIVEL: Fácil
----
¿Qué resultado dará la siguiente operación?
NIVEL: Medio
<nowiki>
5 + 10 * 3 / 4 * (2 + 1) MODULO 5</nowiki>
----
Si sabes que A = false, y te doy la siguiente sentencia lógica: <code>A AND X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A AND X</code>?
NIVEL: Fácil
----
Si sabes que A = true, y te doy la siguiente sentencia lógica: <code>A OR X</code>... ¿Necesitas conocer el valor de X para determinar el valor de <code>A OR X</code>?
NIVEL: Fácil
----
Responde a la pregunta utilizando sentencias lógicas, variables y expresiones aritméticas (si consideras necesario su uso). No tengas miedo de ser creativo, para este problema (y para casi ningún problema en informática) existe una solución única ;)
Ejemplo:
"¿Cómo le ganarías a un pokemon de fuego?"
Respuesta:
<nowiki>
(nivelDelOtroPokemon <= nivelDeMiPokemon && tipoDeMiPokemon == "fuego") ||
(nivelDelOtroPokemon + 5 <= nivelDeMiPokemon && tipoDeMiPokemon == "agua") || (...) </nowiki>
¡completa esta sentencia para ganar puntos extra!
Otro ejemplo:
"¿Cómo regarías una planta con un líquido?"
<nowiki>
líquido == "agua" </nowiki>
"Tienes un reloj analógico, la horera está en el 5, y la minutera está en el 3. ¿En qué hora del día estás? (recuerda que el día tiene 24 horas)
"Un perro cumple 7 años de perro cada 1 año de humano. ¿Cuándo puedes decir que un perro es viejo?"
"¿Te gusta programar?"
6de38d66a02477058d98c35419ed143f63fdabd9
Primer nivel de programación
0
17
67
2014-02-19T10:07:55Z
Bengalaa
3371523
Página creada con «== Problemas Propuestos == === [[Algoritmos Secuenciales]] === ==== Difíciles ==== '''Manecillas del reloj''' ''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like...»
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
a927869cace857b4fe8f49b80da6f92ba68608e3
74
67
2014-02-19T10:35:56Z
Bengalaa
3371523
/* Fáciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos.
b) Dile a robby cuántos grados tiene cada trozo de pizza.
'''Triángulos Rectángulos'''
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
410a3b3002a50a9768937ac33909b1cf0a7bc16e
75
74
2014-02-19T12:20:45Z
Bengalaa
3371523
/* Fáciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
52acc71ed6983d0808e9f4cd4fd854376ffa3261
76
75
2014-02-19T12:21:28Z
Bengalaa
3371523
/* Fáciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
88c457f442096f26ec34d77d8b36542781466536
77
76
2014-02-19T12:33:55Z
Bengalaa
3371523
/* Fáciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
4168ff089c105df29f45ae340612599a8910cf2a
78
77
2014-02-19T13:03:55Z
Bengalaa
3371523
/* Difíciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
'''Escuelas en USA'''
La educación en los colegios de Estados Unidos es muy mala. Hay escuelas que se dedican a darles a los niños "roles" de acuerdo a sus capacidades, y no de acuerdo a sus sueños y aspiraciones... de esta forma, los docentes se dan la tarea de clasificar a los niños en distintos paralelos de acuerdo a sus promedios y sus logros en las distintas materias que cursan. Suelen darle mayor prioridad a los niños deportistas... ¡ellos creen que el deporte es sumamente importante!
Tu deber es hacer un algoritmo para clasificar a los niños en paralelos.
Los estudiantes cursan estas materias:
Computación (com), Historia (his), Química (chem), Filosofía (phi), Educación Física (sport), Matemática (mat), Física (fis) y Biología (bio)
NIVEL 1: Clasifica a los niños en 4 paralelos: A, B, C y D de acuerdo a su promedio:
A: promedio mayor que 80.
B: promedio mayor que 70.
C: promedio mayor que 60.
D: el resto...
NIVEL 2: Los paralelos están divididos en: A para ciencias sociales, B para ingenierías, C para ciencias investigativas, D para ciencias médicas, E para el departamento de limpieza y F para los estudiantes más importantes.
Y estos son los criterios de selección:
A (Ciencias Sociales): Tener un buen promedio en historia, y haber aprobado filosofía y educación física.
B (Ingenierías): Tener un buen promedio en matemática, física y computación, y haber aprobado todas las materias (excepto historia, que no importa si no aprueban).
C (Ciencias Investigativas): Tener un buen promedio en filosofía, matemática, física, computación y química, y haber aprobado todas las materias.
D (Ciencias Médicas): Tener un buen promedio en química y biología.
F (estudiantes más importantes): Tener 100 en física, y haber reprobado todas las demás materias (obligatoriamente).
E (Departamento de limpieza): el resto...
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
256bd674bd7579f8f1f1f1c411c0329fa9592955
79
78
2014-02-19T13:13:06Z
Bengalaa
3371523
/* Difíciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
'''Escuelas en USA'''
La educación en los colegios de Estados Unidos es muy mala. Hay escuelas que se dedican a darles a los niños "roles" de acuerdo a sus capacidades, y no de acuerdo a sus sueños y aspiraciones... de esta forma, los docentes se dan la tarea de clasificar a los niños en distintos paralelos de acuerdo a sus promedios y sus logros en las distintas materias que cursan. Suelen darle mayor prioridad a los niños deportistas... ¡ellos creen que el deporte es sumamente importante!
Tu deber es hacer un algoritmo para clasificar a los niños en paralelos.
Los estudiantes cursan estas materias:
Computación (com), Historia (his), Química (chem), Filosofía (phi), Educación Física (sport), Matemática (mat), Física (fis) y Biología (bio)
'''NIVEL 1:''' Clasifica a los niños en 4 paralelos: A, B, C y D de acuerdo a su promedio:
A: promedio mayor que 80.
B: promedio mayor que 70.
C: promedio mayor que 60.
D: el resto...
'''NIVEL 2:''' Los paralelos están divididos en: A para ciencias sociales, B para ingenierías, C para ciencias investigativas, D para ciencias médicas, E para el departamento de limpieza y F para los estudiantes más importantes.
Y estos son los criterios de selección:
A (Ciencias Sociales): Tener un buen promedio en historia, y haber aprobado filosofía y educación física.
B (Ingenierías): Tener un buen promedio en matemática, física y computación, y haber aprobado todas las materias (excepto historia, que no importa si no aprueban).
C (Ciencias Investigativas): Tener un buen promedio en filosofía, matemática, física, computación y química, y haber aprobado todas las materias.
D (Ciencias Médicas): Tener un buen promedio en química y biología.
F (estudiantes más importantes): Tener 100 en física, y haber reprobado todas las demás materias (obligatoriamente).
E (Departamento de limpieza): el resto...
----
'''Camellos cojos?!'''
En uno de los ejercicios anteriores, Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor brasileño matemático conocido como Malba Tahan) pasó por una granja de camellos que estaba en un cobertizo de madera. El cobertizo estaba totalmente cubierto, de tal forma que no podía ver lo que hay adentro, pero como había una ranura en el piso, podía ver las patas de los camellos.
Pero Beremiz Samir está confundido, porque contó ''n'' patas, pero ''n'' resultó no ser divisible entre 4. Intrigado por esto, pensó que podrían haber camellos cojos... Beremiz Samir sabe que todos los camellos están de pie, no hay ninguno tirado en el suelo, por lo que concluye que los camellos TIENEN que tener 3 ó 4 patas cada uno.
Beremiz Samir quiere saber cuántos camellos cojos hay en el cobertizo, pero sabe que es imposible conocer el número de camellos cojos contando únicamente el número de patas que hay, así que habre un agujero en la parte superior del cobertizo, y ahora, Beremiz Samir puede contar las cabezas de los camellos.
Haz un algoritmo que, dado el número de patas de camello ''n'' que hay, y dado el número de cabezas de camello ''c'' que hay en el cobertizo, te diga cuántos camellos cojos hay en el cobertizo. Si el número de patas no coincide con el número de cabezas, muestra: "Beremiz: ¡contaste mal!"
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
557b12c4d0ddf76fb4a96b11c401366c74b1ed4f
80
79
2014-02-19T13:17:07Z
Bengalaa
3371523
/* Difíciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
'''Escuelas en USA'''
La educación en los colegios de Estados Unidos es muy mala. Hay escuelas que se dedican a darles a los niños "roles" de acuerdo a sus capacidades, y no de acuerdo a sus sueños y aspiraciones... de esta forma, los docentes se dan la tarea de clasificar a los niños en distintos paralelos de acuerdo a sus promedios y sus logros en las distintas materias que cursan. Suelen darle mayor prioridad a los niños deportistas... ¡ellos creen que el deporte es sumamente importante!
Los estudiantes cursan estas materias:
Computación (com), Historia (his), Química (chem), Filosofía (phi), Educación Física (sport), Matemática (mat), Física (fis) y Biología (bio).
Dado el promedio de un niño en cada una de estas materias, tu deber es hacer un algoritmo para clasificar a los niños en paralelos.
(Se considera que un niño tuvo un buen promedio en la materia ''x'', si x >=80)
'''NIVEL 1:''' Clasifica a los niños en 4 paralelos: A, B, C y D de acuerdo a su promedio:
A: promedio mayor que 80.
B: promedio mayor que 70.
C: promedio mayor que 60.
D: el resto...
'''NIVEL 2:''' Los paralelos están divididos en: A para ciencias sociales, B para ingenierías, C para ciencias investigativas, D para ciencias médicas, E para el departamento de limpieza y F para los estudiantes más importantes.
Y estos son los criterios de selección:
A (Ciencias Sociales): Tener un buen promedio en historia, y haber aprobado filosofía y educación física.
B (Ingenierías): Tener un buen promedio en matemática, física y computación, y haber aprobado todas las materias (excepto historia, que no importa si no aprueban).
C (Ciencias Investigativas): Tener un buen promedio en filosofía, matemática, física, computación y química, y haber aprobado todas las materias.
D (Ciencias Médicas): Tener un buen promedio en química y biología.
F (estudiantes más importantes): Tener 100 en física, y haber reprobado todas las demás materias (obligatoriamente).
E (Departamento de limpieza): el resto...
----
'''Camellos cojos?!'''
En uno de los ejercicios anteriores, Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor brasileño matemático conocido como Malba Tahan) pasó por una granja de camellos que estaba en un cobertizo de madera. El cobertizo estaba totalmente cubierto, de tal forma que no podía ver lo que hay adentro, pero como había una ranura en el piso, podía ver las patas de los camellos.
Pero Beremiz Samir está confundido, porque contó ''n'' patas, pero ''n'' resultó no ser divisible entre 4. Intrigado por esto, pensó que podrían haber camellos cojos... Beremiz Samir sabe que todos los camellos están de pie, no hay ninguno tirado en el suelo, por lo que concluye que los camellos TIENEN que tener 3 ó 4 patas cada uno.
Beremiz Samir quiere saber cuántos camellos cojos hay en el cobertizo, pero sabe que es imposible conocer el número de camellos cojos contando únicamente el número de patas que hay, así que habre un agujero en la parte superior del cobertizo, y ahora, Beremiz Samir puede contar las cabezas de los camellos.
Haz un algoritmo que, dado el número de patas de camello ''n'' que hay, y dado el número de cabezas de camello ''c'' que hay en el cobertizo, te diga cuántos camellos cojos hay en el cobertizo. Si el número de patas no coincide con el número de cabezas, muestra: "Beremiz: ¡contaste mal!"
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
2e3340e282954d93977b37ffd00f06f025040b82
81
80
2014-02-19T13:46:04Z
Bengalaa
3371523
/* Fáciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
'''Escuelas en USA'''
La educación en los colegios de Estados Unidos es muy mala. Hay escuelas que se dedican a darles a los niños "roles" de acuerdo a sus capacidades, y no de acuerdo a sus sueños y aspiraciones... de esta forma, los docentes se dan la tarea de clasificar a los niños en distintos paralelos de acuerdo a sus promedios y sus logros en las distintas materias que cursan. Suelen darle mayor prioridad a los niños deportistas... ¡ellos creen que el deporte es sumamente importante!
Los estudiantes cursan estas materias:
Computación (com), Historia (his), Química (chem), Filosofía (phi), Educación Física (sport), Matemática (mat), Física (fis) y Biología (bio).
Dado el promedio de un niño en cada una de estas materias, tu deber es hacer un algoritmo para clasificar a los niños en paralelos.
(Se considera que un niño tuvo un buen promedio en la materia ''x'', si x >=80)
'''NIVEL 1:''' Clasifica a los niños en 4 paralelos: A, B, C y D de acuerdo a su promedio:
A: promedio mayor que 80.
B: promedio mayor que 70.
C: promedio mayor que 60.
D: el resto...
'''NIVEL 2:''' Los paralelos están divididos en: A para ciencias sociales, B para ingenierías, C para ciencias investigativas, D para ciencias médicas, E para el departamento de limpieza y F para los estudiantes más importantes.
Y estos son los criterios de selección:
A (Ciencias Sociales): Tener un buen promedio en historia, y haber aprobado filosofía y educación física.
B (Ingenierías): Tener un buen promedio en matemática, física y computación, y haber aprobado todas las materias (excepto historia, que no importa si no aprueban).
C (Ciencias Investigativas): Tener un buen promedio en filosofía, matemática, física, computación y química, y haber aprobado todas las materias.
D (Ciencias Médicas): Tener un buen promedio en química y biología.
F (estudiantes más importantes): Tener 100 en física, y haber reprobado todas las demás materias (obligatoriamente).
E (Departamento de limpieza): el resto...
----
'''Camellos cojos?!'''
En uno de los ejercicios anteriores, Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor brasileño matemático conocido como Malba Tahan) pasó por una granja de camellos que estaba en un cobertizo de madera. El cobertizo estaba totalmente cubierto, de tal forma que no podía ver lo que hay adentro, pero como había una ranura en el piso, podía ver las patas de los camellos.
Pero Beremiz Samir está confundido, porque contó ''n'' patas, pero ''n'' resultó no ser divisible entre 4. Intrigado por esto, pensó que podrían haber camellos cojos... Beremiz Samir sabe que todos los camellos están de pie, no hay ninguno tirado en el suelo, por lo que concluye que los camellos TIENEN que tener 3 ó 4 patas cada uno.
Beremiz Samir quiere saber cuántos camellos cojos hay en el cobertizo, pero sabe que es imposible conocer el número de camellos cojos contando únicamente el número de patas que hay, así que habre un agujero en la parte superior del cobertizo, y ahora, Beremiz Samir puede contar las cabezas de los camellos.
Haz un algoritmo que, dado el número de patas de camello ''n'' que hay, y dado el número de cabezas de camello ''c'' que hay en el cobertizo, te diga cuántos camellos cojos hay en el cobertizo. Si el número de patas no coincide con el número de cabezas, muestra: "Beremiz: ¡contaste mal!"
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
'''El Ferrocarril de La Paz'''
Nela es una niña muy juguetona, y le gusta jugar con sus hermanos y amigos cuando sale de colegio, le gusta mucho jugar el juego del ferrocarril, se juega así: Los niños se agarran de sus hombros formando un trencito, mientras cantan "El ferrocarril carril carril. Que va hacia La Paz La Paz La Paz. Un paso pa trás pa trás pa trás".
Mientras cantan, van dando pasos, pero no siempre caminan hacia el frente, al final de la canción, caminan hacia atrás. Esta es la forma en la que caminan:
Canción: El Ferro - carril - carril - carril
Pasos: 1 1 1 1
Canción: Que va hacia - La Paz - La Paz - La Paz
Pasos: 1 1 1 1
Canción: Un paso - pa' trás - pa' trás - pa' trás
Pasos: -1 -1 -1 -1
Si parten de un punto A, a cuántos pasos del punto A estarán los niños luego de haber dado ''n'' pasos?
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
39b9627bbe9d6ebef612dc6bdb919da00711c29b
82
81
2014-02-19T13:47:07Z
Bengalaa
3371523
/* Sumatorias */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
'''Escuelas en USA'''
La educación en los colegios de Estados Unidos es muy mala. Hay escuelas que se dedican a darles a los niños "roles" de acuerdo a sus capacidades, y no de acuerdo a sus sueños y aspiraciones... de esta forma, los docentes se dan la tarea de clasificar a los niños en distintos paralelos de acuerdo a sus promedios y sus logros en las distintas materias que cursan. Suelen darle mayor prioridad a los niños deportistas... ¡ellos creen que el deporte es sumamente importante!
Los estudiantes cursan estas materias:
Computación (com), Historia (his), Química (chem), Filosofía (phi), Educación Física (sport), Matemática (mat), Física (fis) y Biología (bio).
Dado el promedio de un niño en cada una de estas materias, tu deber es hacer un algoritmo para clasificar a los niños en paralelos.
(Se considera que un niño tuvo un buen promedio en la materia ''x'', si x >=80)
'''NIVEL 1:''' Clasifica a los niños en 4 paralelos: A, B, C y D de acuerdo a su promedio:
A: promedio mayor que 80.
B: promedio mayor que 70.
C: promedio mayor que 60.
D: el resto...
'''NIVEL 2:''' Los paralelos están divididos en: A para ciencias sociales, B para ingenierías, C para ciencias investigativas, D para ciencias médicas, E para el departamento de limpieza y F para los estudiantes más importantes.
Y estos son los criterios de selección:
A (Ciencias Sociales): Tener un buen promedio en historia, y haber aprobado filosofía y educación física.
B (Ingenierías): Tener un buen promedio en matemática, física y computación, y haber aprobado todas las materias (excepto historia, que no importa si no aprueban).
C (Ciencias Investigativas): Tener un buen promedio en filosofía, matemática, física, computación y química, y haber aprobado todas las materias.
D (Ciencias Médicas): Tener un buen promedio en química y biología.
F (estudiantes más importantes): Tener 100 en física, y haber reprobado todas las demás materias (obligatoriamente).
E (Departamento de limpieza): el resto...
----
'''Camellos cojos?!'''
En uno de los ejercicios anteriores, Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor brasileño matemático conocido como Malba Tahan) pasó por una granja de camellos que estaba en un cobertizo de madera. El cobertizo estaba totalmente cubierto, de tal forma que no podía ver lo que hay adentro, pero como había una ranura en el piso, podía ver las patas de los camellos.
Pero Beremiz Samir está confundido, porque contó ''n'' patas, pero ''n'' resultó no ser divisible entre 4. Intrigado por esto, pensó que podrían haber camellos cojos... Beremiz Samir sabe que todos los camellos están de pie, no hay ninguno tirado en el suelo, por lo que concluye que los camellos TIENEN que tener 3 ó 4 patas cada uno.
Beremiz Samir quiere saber cuántos camellos cojos hay en el cobertizo, pero sabe que es imposible conocer el número de camellos cojos contando únicamente el número de patas que hay, así que habre un agujero en la parte superior del cobertizo, y ahora, Beremiz Samir puede contar las cabezas de los camellos.
Haz un algoritmo que, dado el número de patas de camello ''n'' que hay, y dado el número de cabezas de camello ''c'' que hay en el cobertizo, te diga cuántos camellos cojos hay en el cobertizo. Si el número de patas no coincide con el número de cabezas, muestra: "Beremiz: ¡contaste mal!"
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== 3.3 [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
'''El Ferrocarril de La Paz'''
Nela es una niña muy juguetona, y le gusta jugar con sus hermanos y amigos cuando sale de colegio, le gusta mucho jugar el juego del ferrocarril, se juega así: Los niños se agarran de sus hombros formando un trencito, mientras cantan "El ferrocarril carril carril. Que va hacia La Paz La Paz La Paz. Un paso pa trás pa trás pa trás".
Mientras cantan, van dando pasos, pero no siempre caminan hacia el frente, al final de la canción, caminan hacia atrás. Esta es la forma en la que caminan:
Canción: El Ferro - carril - carril - carril
Pasos: 1 1 1 1
Canción: Que va hacia - La Paz - La Paz - La Paz
Pasos: 1 1 1 1
Canción: Un paso - pa' trás - pa' trás - pa' trás
Pasos: -1 -1 -1 -1
Si parten de un punto A, a cuántos pasos del punto A estarán los niños luego de haber dado ''n'' pasos?
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
----
'''Factorial'''
¡Los programadores odiamos esta operación matemática!
El factorial de un número ''x'' se expresa así: <code><nowiki>x!</nowiki></code>, y para calcularlo, tienes que multiplicar entre sí todos los números desde el 1 hasta el ''x'', así:
15! = 1*2*3*4*5*6*7*8*9*10*11*12*13*14*15
Esto va a dar un número enorme! y es por eso que los programadores odiamos esta operación. Pero aunque lo odiemos, esta operación matemática es muy importante en probabilidades y en técnicas de conteo... Haz un algoritmo que calcule el factorial de un número.
----
'''Carl Friederich Gauss'''
Gauss era un niño superdotado... un genio en las matemáticas. Nació en una granjita, sus padres eran pobres e iletrados, y su mamá ni siquiera registró la fecha de nacimiento de Gauss, Gauss no sabía su cumpleaños (pero lo descifró, años más tarde, con matemática).
Gauss tuvo suerte porque el Duque de Brunswick vio su talento, y le financió sus estudios. Cuando aún era niño, en la escuela, su profesor les pidió que calcularan la suma de todos los números del 1 al 100, Gauss terminó más rápido que todos sus compañeros, porque se dio cuenta que:
1 + 2 + 3 + 4 + ... + 100 == 100 + 99 + 98 + 97 + ... + 1.
Entonces...
(1 + 100) + (2 + 99) + (3 + 98) + (4 + 97) ... + (100 + 1) = 101 + 101 + 101 + 101 + ... + 101 = 100(101).
Y por lo tanto:
1 + 2 + 3 + 4 + ... + 100 = (100 * (100 + 1)) / 2.
El profesor de Gauss quiere verificar que la fórmula es correcta. Escribe un algoritmo iterativo que sume los números del 1 al ''n'' y muestre el resultado.
3a34b41b833f939e5630a68a5ce64cbe4063abe9
84
82
2014-02-19T14:05:39Z
Bengalaa
3371523
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
'''Escuelas en USA'''
La educación en los colegios de Estados Unidos es muy mala. Hay escuelas que se dedican a darles a los niños "roles" de acuerdo a sus capacidades, y no de acuerdo a sus sueños y aspiraciones... de esta forma, los docentes se dan la tarea de clasificar a los niños en distintos paralelos de acuerdo a sus promedios y sus logros en las distintas materias que cursan. Suelen darle mayor prioridad a los niños deportistas... ¡ellos creen que el deporte es sumamente importante!
Los estudiantes cursan estas materias:
Computación (com), Historia (his), Química (chem), Filosofía (phi), Educación Física (sport), Matemática (mat), Física (fis) y Biología (bio).
Dado el promedio de un niño en cada una de estas materias, tu deber es hacer un algoritmo para clasificar a los niños en paralelos.
(Se considera que un niño tuvo un buen promedio en la materia ''x'', si x >=80)
'''NIVEL 1:''' Clasifica a los niños en 4 paralelos: A, B, C y D de acuerdo a su promedio:
A: promedio mayor que 80.
B: promedio mayor que 70.
C: promedio mayor que 60.
D: el resto...
'''NIVEL 2:''' Los paralelos están divididos en: A para ciencias sociales, B para ingenierías, C para ciencias investigativas, D para ciencias médicas, E para el departamento de limpieza y F para los estudiantes más importantes.
Y estos son los criterios de selección:
A (Ciencias Sociales): Tener un buen promedio en historia, y haber aprobado filosofía y educación física.
B (Ingenierías): Tener un buen promedio en matemática, física y computación, y haber aprobado todas las materias (excepto historia, que no importa si no aprueban).
C (Ciencias Investigativas): Tener un buen promedio en filosofía, matemática, física, computación y química, y haber aprobado todas las materias.
D (Ciencias Médicas): Tener un buen promedio en química y biología.
F (estudiantes más importantes): Tener 100 en física, y haber reprobado todas las demás materias (obligatoriamente).
E (Departamento de limpieza): el resto...
----
'''Camellos cojos?!'''
En uno de los ejercicios anteriores, Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor brasileño matemático conocido como Malba Tahan) pasó por una granja de camellos que estaba en un cobertizo de madera. El cobertizo estaba totalmente cubierto, de tal forma que no podía ver lo que hay adentro, pero como había una ranura en el piso, podía ver las patas de los camellos.
Pero Beremiz Samir está confundido, porque contó ''n'' patas, pero ''n'' resultó no ser divisible entre 4. Intrigado por esto, pensó que podrían haber camellos cojos... Beremiz Samir sabe que todos los camellos están de pie, no hay ninguno tirado en el suelo, por lo que concluye que los camellos TIENEN que tener 3 ó 4 patas cada uno.
Beremiz Samir quiere saber cuántos camellos cojos hay en el cobertizo, pero sabe que es imposible conocer el número de camellos cojos contando únicamente el número de patas que hay, así que habre un agujero en la parte superior del cobertizo, y ahora, Beremiz Samir puede contar las cabezas de los camellos.
Haz un algoritmo que, dado el número de patas de camello ''n'' que hay, y dado el número de cabezas de camello ''c'' que hay en el cobertizo, te diga cuántos camellos cojos hay en el cobertizo. Si el número de patas no coincide con el número de cabezas, muestra: "Beremiz: ¡contaste mal!"
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
'''El Ferrocarril de La Paz'''
Nela es una niña muy juguetona, y le gusta jugar con sus hermanos y amigos cuando sale de colegio, le gusta mucho jugar el juego del ferrocarril, se juega así: Los niños se agarran de sus hombros formando un trencito, mientras cantan "El ferrocarril carril carril. Que va hacia La Paz La Paz La Paz. Un paso pa trás pa trás pa trás".
Mientras cantan, van dando pasos, pero no siempre caminan hacia el frente, al final de la canción, caminan hacia atrás. Esta es la forma en la que caminan:
Canción: El Ferro - carril - carril - carril
Pasos: 1 1 1 1
Canción: Que va hacia - La Paz - La Paz - La Paz
Pasos: 1 1 1 1
Canción: Un paso - pa' trás - pa' trás - pa' trás
Pasos: -1 -1 -1 -1
Si parten de un punto A, a cuántos pasos del punto A estarán los niños luego de haber dado ''n'' pasos?
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
'''Números múltiplos de ''a'' '''
a) Dado un número ''a'' y otro número ''n'', genera la serie de los primeros ''n'' números múltiplos de ''a''
b) genera la serie de todos los números múltiplos de ''a'' que se encuentren entre el rango [b, c]
----
'''Serie Geométrica''' [[Archivo:Serie-geometrica.svg]]
La serie geométrica, es una serie de números en la que se comienza con un número r. Se llama geométrica, porque cada número representa el área de un cuadrado.
<nowiki>Serie Geométrica de r: 1/r, 1/r^2, 1/r^3, 1/r^4</nowiki>
Dado un número ''r'', generar su serie geométrica.
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
----
'''Factorial'''
¡Los programadores odiamos esta operación matemática!
El factorial de un número ''x'' se expresa así: <code><nowiki>x!</nowiki></code>, y para calcularlo, tienes que multiplicar entre sí todos los números desde el 1 hasta el ''x'', así:
15! = 1*2*3*4*5*6*7*8*9*10*11*12*13*14*15
Esto va a dar un número enorme! y es por eso que los programadores odiamos esta operación. Pero aunque lo odiemos, esta operación matemática es muy importante en probabilidades y en técnicas de conteo... Haz un algoritmo que calcule el factorial de un número.
----
'''Carl Friederich Gauss'''
Gauss era un niño superdotado... un genio en las matemáticas. Nació en una granjita, sus padres eran pobres e iletrados, y su mamá ni siquiera registró la fecha de nacimiento de Gauss, Gauss no sabía su cumpleaños (pero lo descifró, años más tarde, con matemática).
Gauss tuvo suerte porque el Duque de Brunswick vio su talento, y le financió sus estudios. Cuando aún era niño, en la escuela, su profesor les pidió que calcularan la suma de todos los números del 1 al 100, Gauss terminó más rápido que todos sus compañeros, porque se dio cuenta que:
1 + 2 + 3 + 4 + ... + 100 == 100 + 99 + 98 + 97 + ... + 1.
Entonces...
(1 + 100) + (2 + 99) + (3 + 98) + (4 + 97) ... + (100 + 1) = 101 + 101 + 101 + 101 + ... + 101 = 100(101).
Y por lo tanto:
1 + 2 + 3 + 4 + ... + 100 = (100 * (100 + 1)) / 2.
El profesor de Gauss quiere verificar que la fórmula es correcta. Escribe un algoritmo iterativo que sume los números del 1 al ''n'' y muestre el resultado.
d30a9e8f7755bf517c1b75020284aa833d6b08c3
85
84
2014-02-19T14:08:33Z
Bengalaa
3371523
/* Fáciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el sábado a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
'''Escuelas en USA'''
La educación en los colegios de Estados Unidos es muy mala. Hay escuelas que se dedican a darles a los niños "roles" de acuerdo a sus capacidades, y no de acuerdo a sus sueños y aspiraciones... de esta forma, los docentes se dan la tarea de clasificar a los niños en distintos paralelos de acuerdo a sus promedios y sus logros en las distintas materias que cursan. Suelen darle mayor prioridad a los niños deportistas... ¡ellos creen que el deporte es sumamente importante!
Los estudiantes cursan estas materias:
Computación (com), Historia (his), Química (chem), Filosofía (phi), Educación Física (sport), Matemática (mat), Física (fis) y Biología (bio).
Dado el promedio de un niño en cada una de estas materias, tu deber es hacer un algoritmo para clasificar a los niños en paralelos.
(Se considera que un niño tuvo un buen promedio en la materia ''x'', si x >=80)
'''NIVEL 1:''' Clasifica a los niños en 4 paralelos: A, B, C y D de acuerdo a su promedio:
A: promedio mayor que 80.
B: promedio mayor que 70.
C: promedio mayor que 60.
D: el resto...
'''NIVEL 2:''' Los paralelos están divididos en: A para ciencias sociales, B para ingenierías, C para ciencias investigativas, D para ciencias médicas, E para el departamento de limpieza y F para los estudiantes más importantes.
Y estos son los criterios de selección:
A (Ciencias Sociales): Tener un buen promedio en historia, y haber aprobado filosofía y educación física.
B (Ingenierías): Tener un buen promedio en matemática, física y computación, y haber aprobado todas las materias (excepto historia, que no importa si no aprueban).
C (Ciencias Investigativas): Tener un buen promedio en filosofía, matemática, física, computación y química, y haber aprobado todas las materias.
D (Ciencias Médicas): Tener un buen promedio en química y biología.
F (estudiantes más importantes): Tener 100 en física, y haber reprobado todas las demás materias (obligatoriamente).
E (Departamento de limpieza): el resto...
----
'''Camellos cojos?!'''
En uno de los ejercicios anteriores, Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor brasileño matemático conocido como Malba Tahan) pasó por una granja de camellos que estaba en un cobertizo de madera. El cobertizo estaba totalmente cubierto, de tal forma que no podía ver lo que hay adentro, pero como había una ranura en el piso, podía ver las patas de los camellos.
Pero Beremiz Samir está confundido, porque contó ''n'' patas, pero ''n'' resultó no ser divisible entre 4. Intrigado por esto, pensó que podrían haber camellos cojos... Beremiz Samir sabe que todos los camellos están de pie, no hay ninguno tirado en el suelo, por lo que concluye que los camellos TIENEN que tener 3 ó 4 patas cada uno.
Beremiz Samir quiere saber cuántos camellos cojos hay en el cobertizo, pero sabe que es imposible conocer el número de camellos cojos contando únicamente el número de patas que hay, así que habre un agujero en la parte superior del cobertizo, y ahora, Beremiz Samir puede contar las cabezas de los camellos.
Haz un algoritmo que, dado el número de patas de camello ''n'' que hay, y dado el número de cabezas de camello ''c'' que hay en el cobertizo, te diga cuántos camellos cojos hay en el cobertizo. Si el número de patas no coincide con el número de cabezas, muestra: "Beremiz: ¡contaste mal!"
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
'''El Ferrocarril de La Paz'''
Nela es una niña muy juguetona, y le gusta jugar con sus hermanos y amigos cuando sale de colegio, le gusta mucho jugar el juego del ferrocarril, se juega así: Los niños se agarran de sus hombros formando un trencito, mientras cantan "El ferrocarril carril carril. Que va hacia La Paz La Paz La Paz. Un paso pa trás pa trás pa trás".
Mientras cantan, van dando pasos, pero no siempre caminan hacia el frente, al final de la canción, caminan hacia atrás. Esta es la forma en la que caminan:
Canción: El Ferro - carril - carril - carril
Pasos: 1 1 1 1
Canción: Que va hacia - La Paz - La Paz - La Paz
Pasos: 1 1 1 1
Canción: Un paso - pa' trás - pa' trás - pa' trás
Pasos: -1 -1 -1 -1
Si parten de un punto A, a cuántos pasos del punto A estarán los niños luego de haber dado ''n'' pasos?
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
'''Números múltiplos de ''a'' '''
a) Dado un número ''a'' y otro número ''n'', genera la serie de los primeros ''n'' números múltiplos de ''a''
b) genera la serie de todos los números múltiplos de ''a'' que se encuentren entre el rango [b, c]
----
'''Serie Geométrica''' [[Archivo:Serie-geometrica.svg|thumb|200px]]
La serie geométrica, es una serie de números en la que se comienza con un número r. Se llama geométrica, porque cada número representa el área de un cuadrado.
<nowiki>Serie Geométrica de r: 1/r, 1/r^2, 1/r^3, 1/r^4</nowiki>
Dado un número ''r'', generar su serie geométrica.
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
----
'''Factorial'''
¡Los programadores odiamos esta operación matemática!
El factorial de un número ''x'' se expresa así: <code><nowiki>x!</nowiki></code>, y para calcularlo, tienes que multiplicar entre sí todos los números desde el 1 hasta el ''x'', así:
15! = 1*2*3*4*5*6*7*8*9*10*11*12*13*14*15
Esto va a dar un número enorme! y es por eso que los programadores odiamos esta operación. Pero aunque lo odiemos, esta operación matemática es muy importante en probabilidades y en técnicas de conteo... Haz un algoritmo que calcule el factorial de un número.
----
'''Carl Friederich Gauss'''
Gauss era un niño superdotado... un genio en las matemáticas. Nació en una granjita, sus padres eran pobres e iletrados, y su mamá ni siquiera registró la fecha de nacimiento de Gauss, Gauss no sabía su cumpleaños (pero lo descifró, años más tarde, con matemática).
Gauss tuvo suerte porque el Duque de Brunswick vio su talento, y le financió sus estudios. Cuando aún era niño, en la escuela, su profesor les pidió que calcularan la suma de todos los números del 1 al 100, Gauss terminó más rápido que todos sus compañeros, porque se dio cuenta que:
1 + 2 + 3 + 4 + ... + 100 == 100 + 99 + 98 + 97 + ... + 1.
Entonces...
(1 + 100) + (2 + 99) + (3 + 98) + (4 + 97) ... + (100 + 1) = 101 + 101 + 101 + 101 + ... + 101 = 100(101).
Y por lo tanto:
1 + 2 + 3 + 4 + ... + 100 = (100 * (100 + 1)) / 2.
El profesor de Gauss quiere verificar que la fórmula es correcta. Escribe un algoritmo iterativo que sume los números del 1 al ''n'' y muestre el resultado.
88a34f48c091f7ba539276c2ab9cc9fba83de530
Programación Modular
0
18
68
2014-02-19T10:13:32Z
Bengalaa
3371523
Página creada con «== Guía de Ejercicios == === Cadenas === ==== Fáciles ==== ''':-) INFOAMIGOS :)''' (fácil?) ''(No es de un juez virtual)'' INFOAMIGOS es un grupo de facebook en el q...»
wikitext
text/x-wiki
== Guía de Ejercicios ==
=== Cadenas ===
==== Fáciles ====
''':-) INFOAMIGOS :)''' (fácil?)
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
'''No lo olvides: si modularizas el problema correctamente (lo partes en pedacitos pequeños, y cada pedacito tiene un deber muy específico y único:
<li>
<ul>puedes ''debuguear'' tu programa más fácilmente. </ul>
<ul> Es menos probable que cometas uno de esos ''bugs lógicos'' </ul>
<ul> ¡y te ahorras trabajo! porque puedes reusar tu código en vez de escribirlo una y otra vez... </ul>
</li>
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
==== Difíciles ====
52181dcc2db80030ac0910ae5903b277a497cfee
87
68
2014-02-19T15:19:49Z
Bengalaa
3371523
/* Guía de Ejercicios */
wikitext
text/x-wiki
== Guía de Ejercicios ==
=== Modularidad ===
==== Fáciles ====
==== Difícles ===
'''Adivinando números Primos'''
A Dani le encanta aprender, desafortunadamente, no es muy bueno entendiendo. Su tío es un profesor de matemática, y está intentando enseñarle a Dani los números primos, pero Dani no está entendiendo, así que cada vez que su tío le dice "''x'' es un número primo", Dani cree que si multiplica ''x'' por 5, y le suma 3, encontrará otro número primo. Así que Dani le dice a su tío: "y qué tal ''x'' * 5 + 3? es un número primo?" a lo que su tío, pacientemente, responde sí, o responde no.
Si su tío le dice que no, Dani hará esta operación: ''(x*5+3)''*5-3, y preguntará si es un número primo, a lo que su tío también responderá sí, o no.
Pero si su tío le dice que sí, Dani volverá a hacer la misma operación: ''(x*5+3)''*5+3, y su tío también responderá: sí o no.
Dado un número ''a'', que es el número primo que el tío de Dani le dirá, mostrar cuántas veces Dani se va a equivocar si le pregunta a su tío ''n'' veces utilizando el algoritmo explicado con anterioridad.
=== Cadenas ===
==== Fáciles ====
''':-) INFOAMIGOS :)''' (fácil?)
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
'''No lo olvides: si modularizas el problema correctamente (lo partes en pedacitos pequeños, y cada pedacito tiene un deber muy específico y único:
<li>
<ul>puedes ''debuguear'' tu programa más fácilmente. </ul>
<ul> Es menos probable que cometas uno de esos ''bugs lógicos'' </ul>
<ul> ¡y te ahorras trabajo! porque puedes reusar tu código en vez de escribirlo una y otra vez... </ul>
</li>
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
==== Difíciles ====
3378182a2ce14df97e2af5f263b153448924ae04
Segundo nivel de programación
0
3
69
21
2014-02-19T10:15:53Z
Bengalaa
3371523
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Matrices ===
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
bf29062de42a8f7091f97cafc9ed8a54b1d367a3
88
69
2014-03-02T19:43:15Z
Arunwlh
3371524
/* Matrices */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Matrices ===
=== Intermedio ===
'''Matrices Simétricas'''
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
99c6ceea91f3e7e29ac95471694843373d5dbe1e
89
88
2014-03-02T19:44:10Z
Arunwlh
3371524
/* Intermedio */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Matrices ===
==== Intermedio ====
'''Matrices Simétricas'''
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
d4493b9963f89742d251cb7b04710cb6530f25b6
90
89
2014-03-02T19:54:23Z
Arunwlh
3371524
/* Intermedio */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Matrices ===
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
a700352d370da4fea37db2d0f93c79b69841b644
91
90
2014-03-02T20:01:23Z
Arunwlh
3371524
/* Problemas Propuestos */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
=== Matrices ===
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
f13db8a3da497cc6c368a75beaf1746c02af7d94
92
91
2014-03-03T04:11:30Z
Arunwlh
3371524
/* Vectores */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
=== Matrices ===
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
44aac8f770f3da6cad2f7ffe5f52902eadb39d42
93
92
2014-03-03T04:11:58Z
Arunwlh
3371524
/* Vectores */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
=== Matrices ===
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
57bde8c3d53a363ac095771fe720dbf39062231d
94
93
2014-03-03T04:24:08Z
Arunwlh
3371524
/* Matrices */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
=== Matrices ===
==== Fácil ====
'''Operaciones Básicas'''
Se pide realizar las operaciones básicas entre matrices (Suma, Resta, Producto). Además de hallar el determinante para matrices cuadradas.
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
073196c16291679f07c2007962af7f5a91b0223c
95
94
2014-03-03T04:40:40Z
Arunwlh
3371524
/* Vectores */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
''''Difícil''''
''' Escoger Equipos'''
Tenemos una lista de jugadores con los que conformaremos equipos. A cada jugador lo representa un número que califica su capacidad, un número grande representa una capacidad mayor.
Usualmente, para escoger 2 equipos se seleccionan 2 "Capitanes", obviamente, el primero en escoger elige al mejor jugador. Luego el otro capitán elige de los que quedan, al mejor y así sucesivamente.
Como ejemplo, los jugadores vienen de la siguiente forma:
5 7 8 4 2
El primer capitán escogería al 8, el segundo a 7, así hasta que no queden jugadores. Siguiendo este proceso los equipos tendrían:
Equipo 1: 8 + 5 + 2 = 15
Equipo 2: 7 + 4 = 11
Queremos encontrar el valor absoluto de la diferencia entre ambas sumas.
15 - 11 = 4
=== Matrices ===
==== Fácil ====
'''Operaciones Básicas'''
Se pide realizar las operaciones básicas entre matrices (Suma, Resta, Producto). Además de hallar el determinante para matrices cuadradas.
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
9c3c6e78f943e1354947fb72c27436ea1bb4427e
96
95
2014-03-03T04:42:16Z
Arunwlh
3371524
/* Vectores */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
==== Fácil ====
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
====Difícil====
''' Escoger Equipos'''
Tenemos una lista de jugadores con los que conformaremos equipos. A cada jugador lo representa un número que califica su capacidad, un número grande representa una capacidad mayor.
Usualmente, para escoger 2 equipos se seleccionan 2 "Capitanes", obviamente, el primero en escoger elige al mejor jugador. Luego el otro capitán elige de los que quedan, al mejor y así sucesivamente.
Como ejemplo, los jugadores vienen de la siguiente forma:
5 7 8 4 2
El primer capitán escogería al 8, el segundo a 7, así hasta que no queden jugadores. Siguiendo este proceso los equipos tendrían:
Equipo 1: 8 + 5 + 2 = 15
Equipo 2: 7 + 4 = 11
Queremos encontrar el valor absoluto de la diferencia entre ambas sumas.
15 - 11 = 4
=== Matrices ===
==== Fácil ====
'''Operaciones Básicas'''
Se pide realizar las operaciones básicas entre matrices (Suma, Resta, Producto). Además de hallar el determinante para matrices cuadradas.
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
4024326773c9ce33314689daa4d98566bfbbb3e7
97
96
2014-03-03T04:42:39Z
Arunwlh
3371524
/* Vectores */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
==== Intermedio ====
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
====Difícil====
''' Escoger Equipos'''
Tenemos una lista de jugadores con los que conformaremos equipos. A cada jugador lo representa un número que califica su capacidad, un número grande representa una capacidad mayor.
Usualmente, para escoger 2 equipos se seleccionan 2 "Capitanes", obviamente, el primero en escoger elige al mejor jugador. Luego el otro capitán elige de los que quedan, al mejor y así sucesivamente.
Como ejemplo, los jugadores vienen de la siguiente forma:
5 7 8 4 2
El primer capitán escogería al 8, el segundo a 7, así hasta que no queden jugadores. Siguiendo este proceso los equipos tendrían:
Equipo 1: 8 + 5 + 2 = 15
Equipo 2: 7 + 4 = 11
Queremos encontrar el valor absoluto de la diferencia entre ambas sumas.
15 - 11 = 4
=== Matrices ===
==== Fácil ====
'''Operaciones Básicas'''
Se pide realizar las operaciones básicas entre matrices (Suma, Resta, Producto). Además de hallar el determinante para matrices cuadradas.
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
4824cf3aa7e07fec856aed3a7e4c89fa48bef790
98
97
2014-03-03T14:17:11Z
Arunwlh
3371524
/* Vectores */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
==== Intermedio ====
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
''' Escoger Equipos'''
Tenemos una lista de jugadores con los que conformaremos equipos. A cada jugador lo representa un número que califica su capacidad, un número grande representa una capacidad mayor.
Usualmente, para escoger 2 equipos se seleccionan 2 "Capitanes", obviamente, el primero en escoger elige al mejor jugador. Luego el otro capitán elige de los que quedan, al mejor y así sucesivamente.
Como ejemplo, los jugadores vienen de la siguiente forma:
5 7 8 4 2
El primer capitán escogería al 8, el segundo a 7, así hasta que no queden jugadores. Siguiendo este proceso los equipos tendrían:
Equipo 1: 8 + 5 + 2 = 15
Equipo 2: 7 + 4 = 11
Queremos encontrar el valor absoluto de la diferencia entre ambas sumas.
15 - 11 = 4
=== Matrices ===
==== Fácil ====
'''Operaciones Básicas'''
Se pide realizar las operaciones básicas entre matrices (Suma, Resta, Producto). Además de hallar el determinante para matrices cuadradas.
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
d37705cfdde334cecd3f3f4b50c051e200552c75
99
98
2014-03-06T01:07:38Z
Arunwlh
3371524
/* Difíciles */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
==== Intermedio ====
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
''' Escoger Equipos'''
Tenemos una lista de jugadores con los que conformaremos equipos. A cada jugador lo representa un número que califica su capacidad, un número grande representa una capacidad mayor.
Usualmente, para escoger 2 equipos se seleccionan 2 "Capitanes", obviamente, el primero en escoger elige al mejor jugador. Luego el otro capitán elige de los que quedan, al mejor y así sucesivamente.
Como ejemplo, los jugadores vienen de la siguiente forma:
5 7 8 4 2
El primer capitán escogería al 8, el segundo a 7, así hasta que no queden jugadores. Siguiendo este proceso los equipos tendrían:
Equipo 1: 8 + 5 + 2 = 15
Equipo 2: 7 + 4 = 11
Queremos encontrar el valor absoluto de la diferencia entre ambas sumas.
15 - 11 = 4
=== Matrices ===
==== Fácil ====
'''Operaciones Básicas'''
Se pide realizar las operaciones básicas entre matrices (Suma, Resta, Producto). Además de hallar el determinante para matrices cuadradas.
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
'''Tableros'''
Un tablero de ajedrez es un tablero que satisface las siguientes condiciones:
<ul>
<li>Tiene una forma rectangular o cuadrada</li>
<li>Está compuesto por las letras mayúsculas X y O</li>
<li>Ninguno de los símbolos adyacentes, tanto horzontales como verticales son iguales</li>
<li>El símbolo de la esquina inferior derecha es un punto</li>
</ul>
Para 2 números enteros a y b, hallar su respectivo tablero de ajedrez.
Ejemplo:
O X O X O X O
X O X O X O X
a = 7 O X O X O X O
b = 7 X O X O X O X
O X O X O X O
X O X O X O X
866b690dc781fac5116fe51c2cc1752b89eefc41
100
99
2014-03-06T01:09:03Z
Arunwlh
3371524
/* Difíciles */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
==== Intermedio ====
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
''' Escoger Equipos'''
Tenemos una lista de jugadores con los que conformaremos equipos. A cada jugador lo representa un número que califica su capacidad, un número grande representa una capacidad mayor.
Usualmente, para escoger 2 equipos se seleccionan 2 "Capitanes", obviamente, el primero en escoger elige al mejor jugador. Luego el otro capitán elige de los que quedan, al mejor y así sucesivamente.
Como ejemplo, los jugadores vienen de la siguiente forma:
5 7 8 4 2
El primer capitán escogería al 8, el segundo a 7, así hasta que no queden jugadores. Siguiendo este proceso los equipos tendrían:
Equipo 1: 8 + 5 + 2 = 15
Equipo 2: 7 + 4 = 11
Queremos encontrar el valor absoluto de la diferencia entre ambas sumas.
15 - 11 = 4
=== Matrices ===
==== Fácil ====
'''Operaciones Básicas'''
Se pide realizar las operaciones básicas entre matrices (Suma, Resta, Producto). Además de hallar el determinante para matrices cuadradas.
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
'''Tableros'''
Un tablero de ajedrez es un tablero que satisface las siguientes condiciones:
<ul>
<li>Tiene una forma rectangular o cuadrada</li>
<li>Está compuesto por las letras mayúsculas X y O</li>
<li>Ninguno de los símbolos adyacentes, tanto horzontales como verticales son iguales</li>
<li>El símbolo de la esquina inferior derecha es un punto</li>
</ul>
Para 2 números enteros a y b, hallar su respectivo tablero de ajedrez.
Ejemplo:
O X O X O X O
X O X O X O X
a = 7 O X O X O X O
b = 7 X O X O X O X
O X O X O X O
X O X O X O X
5804e44525ce7ad11d81e5e21502473877029cf1
Archivo:Serie-geometrica.svg
6
19
83
2014-02-19T14:01:51Z
Bengalaa
3371523
fuente: http://commons.wikimedia.org/wiki/File:GeometricSquares.svg
wikitext
text/x-wiki
fuente: http://commons.wikimedia.org/wiki/File:GeometricSquares.svg
511c5c075000a61685ba8c7abd690f51747713f3
Segundo nivel de programación
0
3
101
100
2014-03-06T01:23:16Z
Arunwlh
3371524
/* Difíciles */
wikitext
text/x-wiki
5.1 [[Arreglos]]
5.2 [[Vector|Arreglos Unidimensionales (Vectores)]]
5.3 [[Entrada y Salida de Datos|Entrada / Salida de datos]]
5.4 [[Inversión]], [[Sumatoria]], [[promedio]]
5.5 [[Generación de vectores]]
5.6 [[Suma de polinomios]]
5.7 [[Búsqueda (secuencial, binaria)]]
5.8 [[Clasificación; Burbujas, Inserción directa, Conteo, shell, quicksort]]
5.9 [[Bidimensionales (Matrices)]]
5.10 [[Entrada / Salida]]
5.11 [[Matrices cuadradas - Ejercicios con diagonales - Ejercicios con Triangulares]]
5.12 [[Operaciones con matrices, inversión, suma, multiplicación]]
5.13 [[Generación de matrices]]
5.14 [[Aplicación / Ejercicios]]
5.15 [[Arreglos multidimensionales]]
== Problemas Propuestos ==
=== Vectores ===
==== Intermedio ====
'''Filtro'''
Se está realizando un procedimiento a una consulta que toma mucho tiempo, para agilizar las cosas, se debe realizar un programa que se ocupe de las siguientes tareas:
<ul>
<li>Se deben quitar las palabras frecuentemente utilizadas. Estas palabras aumentan nuestro tiempo de ejecución</li>
<li>Se deben quitar las palabras duplicadas. Cada palabra diferente debe aparecer solo 1 vez</li>
<li>Se deben ordenar las palabras de acuerdo al alfabeto</li>
</ul>
Por ejemplo, si la consulta es:
''un examen fácil''
y las palabras frecuentes son:
''un el los''
la respuesta debe ser:
''examen fácil.''
Se quitó la palabra frecuente ''un''
''' Escoger Equipos'''
Tenemos una lista de jugadores con los que conformaremos equipos. A cada jugador lo representa un número que califica su capacidad, un número grande representa una capacidad mayor.
Usualmente, para escoger 2 equipos se seleccionan 2 "Capitanes", obviamente, el primero en escoger elige al mejor jugador. Luego el otro capitán elige de los que quedan, al mejor y así sucesivamente.
Como ejemplo, los jugadores vienen de la siguiente forma:
5 7 8 4 2
El primer capitán escogería al 8, el segundo a 7, así hasta que no queden jugadores. Siguiendo este proceso los equipos tendrían:
Equipo 1: 8 + 5 + 2 = 15
Equipo 2: 7 + 4 = 11
Queremos encontrar el valor absoluto de la diferencia entre ambas sumas.
15 - 11 = 4
=== Matrices ===
==== Fácil ====
'''Operaciones Básicas'''
Se pide realizar las operaciones básicas entre matrices (Suma, Resta, Producto). Además de hallar el determinante para matrices cuadradas.
==== Intermedio ====
'''Matrices Simétricas''' (Conceptos y Ejercicios de Programación, Lic. Jorge Terán)
Una matriz es simétrica cuando al trasponer las filas por las columnas obtenemos la misma matriz. Por ejemplo:
2 3 4 6 9
3 4 6 1 8
9 8 5
Son matrices simétricas, y:
2 1
3 5
no es una matriz simétrica. Entonces, dada una matriz cuadrada, verificar si es "Simétrica" o "No simétrica"
==== Difíciles ====
'''Contando manchas'''
Dada una matriz de n x m, como se muestra en el grafico, se pide encontrar la “mancha” más grande que se pueda encontrar en la matriz, una celda manchada estará representada por un 1 y una limpia x un 0
<nowiki>
000011
000111
110000
000111 </nowiki>
En la matriz anterior se puede observar que la “mancha” más grande es de 5
'''Tableros'''
Un tablero de ajedrez es un tablero que satisface las siguientes condiciones:
<ul>
<li>Tiene una forma rectangular o cuadrada</li>
<li>Está compuesto por las letras mayúsculas X y O</li>
<li>Ninguno de los símbolos adyacentes, tanto horzontales como verticales son iguales</li>
<li>El símbolo de la esquina inferior derecha es un punto</li>
</ul>
Para 2 números enteros a y b, hallar su respectivo tablero de ajedrez.
Ejemplo:
X O X O X O X
O X O X O X O
X O X O X O X
a = 7 O X O X O X O
b = 7 X O X O X O X
O X O X O X O
X O X O X O X
'''Tres en Raya'''
Un conocido juego, sencillo y fácil de jugar consta de una matriz de 3 x 3 cuyas reglas son las siguientes:
<ul>
<li>Juegan 2 personas por turnos</li>
<li>Cada persona, en su turno, pone una marca en el tablero</li>
<li>Gana la persona que logró ajustar 3 de sus marcas en una sola linea</li>
</ul>
Se pide que realize un programa que permita introducir la marca de un jugador en una posición dada y verificar si éste es el ganador.
en caso contrario, es el turno del siguiente jugador. El proceso se repite hasta encontrar un ganador o todas las posiciones estén llenas (empate)
Mostrar si hubo un empate o que jugador ganó.
9cc6f4ade84f3aa1bffb831a02a6390b3e93d683
Programación Modular
0
18
102
87
2014-03-06T02:26:10Z
Arunwlh
3371524
/* Cadenas */
wikitext
text/x-wiki
== Guía de Ejercicios ==
=== Modularidad ===
==== Fáciles ====
==== Difícles ===
'''Adivinando números Primos'''
A Dani le encanta aprender, desafortunadamente, no es muy bueno entendiendo. Su tío es un profesor de matemática, y está intentando enseñarle a Dani los números primos, pero Dani no está entendiendo, así que cada vez que su tío le dice "''x'' es un número primo", Dani cree que si multiplica ''x'' por 5, y le suma 3, encontrará otro número primo. Así que Dani le dice a su tío: "y qué tal ''x'' * 5 + 3? es un número primo?" a lo que su tío, pacientemente, responde sí, o responde no.
Si su tío le dice que no, Dani hará esta operación: ''(x*5+3)''*5-3, y preguntará si es un número primo, a lo que su tío también responderá sí, o no.
Pero si su tío le dice que sí, Dani volverá a hacer la misma operación: ''(x*5+3)''*5+3, y su tío también responderá: sí o no.
Dado un número ''a'', que es el número primo que el tío de Dani le dirá, mostrar cuántas veces Dani se va a equivocar si le pregunta a su tío ''n'' veces utilizando el algoritmo explicado con anterioridad.
=== Cadenas ===
==== Fáciles ====
''':-) INFOAMIGOS :)''' (fácil?)
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
'''No lo olvides: si modularizas el problema correctamente (lo partes en pedacitos pequeños, y cada pedacito tiene un deber muy específico y único:
<li>
<ul>puedes ''debuguear'' tu programa más fácilmente. </ul>
<ul> Es menos probable que cometas uno de esos ''bugs lógicos'' </ul>
<ul> ¡y te ahorras trabajo! porque puedes reusar tu código en vez de escribirlo una y otra vez... </ul>
</li>
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
'''Mensajes Ocultos'''
Algunos textos contienen mensajes ocultos, en este problema un mensaje oculto se compone de la primera letra de las palabras de un lote de palabras. por ejemplo:
compete online design event rating
el mensaje oculto es: coder
==== Intermedio ====
'''Concursos por SMS'''
Los números de los concursos donde uno envia mensajes de texto son de 4 dígitos.
Una empresa desea contratar un número de acuerdo a su sigla, por ejemplo, La Universidad Mayor de San Andrés desea el número UMSA. La compañía de celulares le ha pedido que haga un programa para determinar si una sigla está disponible.
En su celular (si tiene teclas del 0 a 9) puede observar que la asignación de teclas es como sigue:
abc = 2, def = 3, ghi = 4, jkl = 5, mno = 6, pqrs = 7, tuv = 8, wxyz = 9.
Nivel 1: Para una sigla de 4 letras, hacer un algoritmo que de como resultado su número de concurso.
Nivel 2: Para un lote de n números de 4 dígitos, verificar si el número de la empresa está disponible.
Ejemplo:
umsa 8672
n = 3
2222, 3547, 8672 no disponible
==== Difíciles ====
89518cc2ebbb62cc517ea417abcf5cc60617f620
103
102
2014-03-09T23:05:10Z
Arunwlh
3371524
/* Fáciles */
wikitext
text/x-wiki
== Guía de Ejercicios ==
=== Modularidad ===
==== Fáciles ====
'''Cambio a modularidad'''
Entre los algoritmos que realizamos tenemos a la serie de los números primos y fibonacci, además de como calcular factoriales. <br />
<ul>
<li>Haz un algoritmo para obtener el n-ésimo número primo usando un método</li>
<li>Dado un número, verificar si pertenece a la serie de los números fibonacci, en caso positivo muestra los siguientes 3 números fibonacci, en caso negativo, calcula su factorial. Hint: usando modularidad el problema se hace fácil</li>
</ul>
==== Difícles ===
'''Adivinando números Primos'''
A Dani le encanta aprender, desafortunadamente, no es muy bueno entendiendo. Su tío es un profesor de matemática, y está intentando enseñarle a Dani los números primos, pero Dani no está entendiendo, así que cada vez que su tío le dice "''x'' es un número primo", Dani cree que si multiplica ''x'' por 5, y le suma 3, encontrará otro número primo. Así que Dani le dice a su tío: "y qué tal ''x'' * 5 + 3? es un número primo?" a lo que su tío, pacientemente, responde sí, o responde no.
Si su tío le dice que no, Dani hará esta operación: ''(x*5+3)''*5-3, y preguntará si es un número primo, a lo que su tío también responderá sí, o no.
Pero si su tío le dice que sí, Dani volverá a hacer la misma operación: ''(x*5+3)''*5+3, y su tío también responderá: sí o no.
Dado un número ''a'', que es el número primo que el tío de Dani le dirá, mostrar cuántas veces Dani se va a equivocar si le pregunta a su tío ''n'' veces utilizando el algoritmo explicado con anterioridad.
=== Cadenas ===
==== Fáciles ====
''':-) INFOAMIGOS :)''' (fácil?)
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
'''No lo olvides: si modularizas el problema correctamente (lo partes en pedacitos pequeños, y cada pedacito tiene un deber muy específico y único:
<li>
<ul>puedes ''debuguear'' tu programa más fácilmente. </ul>
<ul> Es menos probable que cometas uno de esos ''bugs lógicos'' </ul>
<ul> ¡y te ahorras trabajo! porque puedes reusar tu código en vez de escribirlo una y otra vez... </ul>
</li>
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
'''Mensajes Ocultos'''
Algunos textos contienen mensajes ocultos, en este problema un mensaje oculto se compone de la primera letra de las palabras de un lote de palabras. por ejemplo:
compete online design event rating
el mensaje oculto es: coder
==== Intermedio ====
'''Concursos por SMS'''
Los números de los concursos donde uno envia mensajes de texto son de 4 dígitos.
Una empresa desea contratar un número de acuerdo a su sigla, por ejemplo, La Universidad Mayor de San Andrés desea el número UMSA. La compañía de celulares le ha pedido que haga un programa para determinar si una sigla está disponible.
En su celular (si tiene teclas del 0 a 9) puede observar que la asignación de teclas es como sigue:
abc = 2, def = 3, ghi = 4, jkl = 5, mno = 6, pqrs = 7, tuv = 8, wxyz = 9.
Nivel 1: Para una sigla de 4 letras, hacer un algoritmo que de como resultado su número de concurso.
Nivel 2: Para un lote de n números de 4 dígitos, verificar si el número de la empresa está disponible.
Ejemplo:
umsa 8672
n = 3
2222, 3547, 8672 no disponible
==== Difíciles ====
5e4f4160b2f6e622a9218fc4c18e5752a915e105
104
103
2014-03-09T23:05:53Z
Arunwlh
3371524
/* = Difícles */
wikitext
text/x-wiki
== Guía de Ejercicios ==
=== Modularidad ===
==== Fáciles ====
'''Cambio a modularidad'''
Entre los algoritmos que realizamos tenemos a la serie de los números primos y fibonacci, además de como calcular factoriales. <br />
<ul>
<li>Haz un algoritmo para obtener el n-ésimo número primo usando un método</li>
<li>Dado un número, verificar si pertenece a la serie de los números fibonacci, en caso positivo muestra los siguientes 3 números fibonacci, en caso negativo, calcula su factorial. Hint: usando modularidad el problema se hace fácil</li>
</ul>
=== Difícles ===
'''Adivinando números Primos'''
A Dani le encanta aprender, desafortunadamente, no es muy bueno entendiendo. Su tío es un profesor de matemática, y está intentando enseñarle a Dani los números primos, pero Dani no está entendiendo, así que cada vez que su tío le dice "''x'' es un número primo", Dani cree que si multiplica ''x'' por 5, y le suma 3, encontrará otro número primo. Así que Dani le dice a su tío: "y qué tal ''x'' * 5 + 3? es un número primo?" a lo que su tío, pacientemente, responde sí, o responde no.
Si su tío le dice que no, Dani hará esta operación: ''(x*5+3)''*5-3, y preguntará si es un número primo, a lo que su tío también responderá sí, o no.
Pero si su tío le dice que sí, Dani volverá a hacer la misma operación: ''(x*5+3)''*5+3, y su tío también responderá: sí o no.
Dado un número ''a'', que es el número primo que el tío de Dani le dirá, mostrar cuántas veces Dani se va a equivocar si le pregunta a su tío ''n'' veces utilizando el algoritmo explicado con anterioridad.
=== Cadenas ===
==== Fáciles ====
''':-) INFOAMIGOS :)''' (fácil?)
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
'''No lo olvides: si modularizas el problema correctamente (lo partes en pedacitos pequeños, y cada pedacito tiene un deber muy específico y único:
<li>
<ul>puedes ''debuguear'' tu programa más fácilmente. </ul>
<ul> Es menos probable que cometas uno de esos ''bugs lógicos'' </ul>
<ul> ¡y te ahorras trabajo! porque puedes reusar tu código en vez de escribirlo una y otra vez... </ul>
</li>
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
'''Mensajes Ocultos'''
Algunos textos contienen mensajes ocultos, en este problema un mensaje oculto se compone de la primera letra de las palabras de un lote de palabras. por ejemplo:
compete online design event rating
el mensaje oculto es: coder
==== Intermedio ====
'''Concursos por SMS'''
Los números de los concursos donde uno envia mensajes de texto son de 4 dígitos.
Una empresa desea contratar un número de acuerdo a su sigla, por ejemplo, La Universidad Mayor de San Andrés desea el número UMSA. La compañía de celulares le ha pedido que haga un programa para determinar si una sigla está disponible.
En su celular (si tiene teclas del 0 a 9) puede observar que la asignación de teclas es como sigue:
abc = 2, def = 3, ghi = 4, jkl = 5, mno = 6, pqrs = 7, tuv = 8, wxyz = 9.
Nivel 1: Para una sigla de 4 letras, hacer un algoritmo que de como resultado su número de concurso.
Nivel 2: Para un lote de n números de 4 dígitos, verificar si el número de la empresa está disponible.
Ejemplo:
umsa 8672
n = 3
2222, 3547, 8672 no disponible
==== Difíciles ====
72a77068dbd9f439e61a8486978b390856821e2e
105
104
2014-03-10T01:02:51Z
Arunwlh
3371524
/* Intermedio */
wikitext
text/x-wiki
== Guía de Ejercicios ==
=== Modularidad ===
==== Fáciles ====
'''Cambio a modularidad'''
Entre los algoritmos que realizamos tenemos a la serie de los números primos y fibonacci, además de como calcular factoriales. <br />
<ul>
<li>Haz un algoritmo para obtener el n-ésimo número primo usando un método</li>
<li>Dado un número, verificar si pertenece a la serie de los números fibonacci, en caso positivo muestra los siguientes 3 números fibonacci, en caso negativo, calcula su factorial. Hint: usando modularidad el problema se hace fácil</li>
</ul>
=== Difícles ===
'''Adivinando números Primos'''
A Dani le encanta aprender, desafortunadamente, no es muy bueno entendiendo. Su tío es un profesor de matemática, y está intentando enseñarle a Dani los números primos, pero Dani no está entendiendo, así que cada vez que su tío le dice "''x'' es un número primo", Dani cree que si multiplica ''x'' por 5, y le suma 3, encontrará otro número primo. Así que Dani le dice a su tío: "y qué tal ''x'' * 5 + 3? es un número primo?" a lo que su tío, pacientemente, responde sí, o responde no.
Si su tío le dice que no, Dani hará esta operación: ''(x*5+3)''*5-3, y preguntará si es un número primo, a lo que su tío también responderá sí, o no.
Pero si su tío le dice que sí, Dani volverá a hacer la misma operación: ''(x*5+3)''*5+3, y su tío también responderá: sí o no.
Dado un número ''a'', que es el número primo que el tío de Dani le dirá, mostrar cuántas veces Dani se va a equivocar si le pregunta a su tío ''n'' veces utilizando el algoritmo explicado con anterioridad.
=== Cadenas ===
==== Fáciles ====
''':-) INFOAMIGOS :)''' (fácil?)
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
'''No lo olvides: si modularizas el problema correctamente (lo partes en pedacitos pequeños, y cada pedacito tiene un deber muy específico y único:
<li>
<ul>puedes ''debuguear'' tu programa más fácilmente. </ul>
<ul> Es menos probable que cometas uno de esos ''bugs lógicos'' </ul>
<ul> ¡y te ahorras trabajo! porque puedes reusar tu código en vez de escribirlo una y otra vez... </ul>
</li>
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
'''Mensajes Ocultos'''
Algunos textos contienen mensajes ocultos, en este problema un mensaje oculto se compone de la primera letra de las palabras de un lote de palabras. por ejemplo:
compete online design event rating
el mensaje oculto es: coder
==== Intermedio ====
'''Concursos por SMS'''
Los números de los concursos donde uno envia mensajes de texto son de 4 dígitos.
Una empresa desea contratar un número de acuerdo a su sigla, por ejemplo, La Universidad Mayor de San Andrés desea el número UMSA. La compañía de celulares le ha pedido que haga un programa para determinar si una sigla está disponible.
En su celular (si tiene teclas del 0 a 9) puede observar que la asignación de teclas es como sigue:
abc = 2, def = 3, ghi = 4, jkl = 5, mno = 6, pqrs = 7, tuv = 8, wxyz = 9.
Nivel 1: Para una sigla de 4 letras, hacer un algoritmo que de como resultado su número de concurso.
Nivel 2: Para un lote de n números de 4 dígitos, verificar si el número de la empresa está disponible.
Ejemplo:
umsa 8672
n = 3
2222, 3547, 8672 no disponible
'''Cercas'''
Llamamos cerca a una sucesión de caracteres que contienen los símbolos | y - en forma alternada.
Ejemplos:
|-|-|- es una cerca de dimensión 6
-|-|-|-|- es una cerca de dimensión 9
|--||- no es una cerca por que los símbolos no estan alternados
Dada una cadena representada por - y |, encontrar la subcadena mas larga que sea una cerca, devolver su longitud.
<br/>Por ejemplo, la cadena:
|-|-----|-|-|-|-|||-
posee a la subcadena:
-|-|-|-|-|
y ésta es una cerca de longitud 10
==== Difíciles ====
625e915d14f6d78c79eb686183e6b345d87d27d1
106
105
2014-03-10T01:05:09Z
Arunwlh
3371524
/* Intermedio */
wikitext
text/x-wiki
== Guía de Ejercicios ==
=== Modularidad ===
==== Fáciles ====
'''Cambio a modularidad'''
Entre los algoritmos que realizamos tenemos a la serie de los números primos y fibonacci, además de como calcular factoriales. <br />
<ul>
<li>Haz un algoritmo para obtener el n-ésimo número primo usando un método</li>
<li>Dado un número, verificar si pertenece a la serie de los números fibonacci, en caso positivo muestra los siguientes 3 números fibonacci, en caso negativo, calcula su factorial. Hint: usando modularidad el problema se hace fácil</li>
</ul>
=== Difícles ===
'''Adivinando números Primos'''
A Dani le encanta aprender, desafortunadamente, no es muy bueno entendiendo. Su tío es un profesor de matemática, y está intentando enseñarle a Dani los números primos, pero Dani no está entendiendo, así que cada vez que su tío le dice "''x'' es un número primo", Dani cree que si multiplica ''x'' por 5, y le suma 3, encontrará otro número primo. Así que Dani le dice a su tío: "y qué tal ''x'' * 5 + 3? es un número primo?" a lo que su tío, pacientemente, responde sí, o responde no.
Si su tío le dice que no, Dani hará esta operación: ''(x*5+3)''*5-3, y preguntará si es un número primo, a lo que su tío también responderá sí, o no.
Pero si su tío le dice que sí, Dani volverá a hacer la misma operación: ''(x*5+3)''*5+3, y su tío también responderá: sí o no.
Dado un número ''a'', que es el número primo que el tío de Dani le dirá, mostrar cuántas veces Dani se va a equivocar si le pregunta a su tío ''n'' veces utilizando el algoritmo explicado con anterioridad.
=== Cadenas ===
==== Fáciles ====
''':-) INFOAMIGOS :)''' (fácil?)
''(No es de un juez virtual)''
INFOAMIGOS es un grupo de facebook en el que se reunen los informáticos a hablar de todo lo que pasa en la carrera! (y también de lo que no pasa en la carrera).
Pneumonoultramicrosco, The Cat, es uno de los administradores de este sitio, y está fascinado por la excesiva atención que reciben los memes y ciertas palabras claves en el grupo. Luego de varios años de estudio, ha creado un modelo matemático que mide los likes que recibe una publicación de acuerdo a las palabras que esta publicación contiene. Para mantener el modelo matemático funcionando, Pneumonoultramicrosco, The Cat, necesita un programa que le diga cuántos likes debería tener una publicación de acuerdo al modelo matemático que Pneumonoultramicrosco, The Cat, descubrió.
Pneumonoultramicrosco, The Cat, te dirá una palabra ''p'', y luego, te dirá un número ''l'' que indica el número de likes que recibe una publicación, por cada vez que aparece la palabra ''p'' en el comentario.
Luego, Pneumonoultramicrosco, The Cat, te dirá una cadena de texto ''cad'', que es el texto que la publicación tiene. Tu deber es indicar cuántos likes recibiría esa publicación
EJEMPLO: p="hacker" l=53. cad="acs un programa q v si un numero s primo y ya t crs un hacker de anonymous", este comentario tendrá 53 likes.
OTRO EJEMPLO: p="je" l=3. cad="solo xistn 10 tipos d personas n l mundo: los q sabn codigo binario y los q no je jejeje je". Este comentario tendrá 5*3=15 likes.
'''No lo olvides: si modularizas el problema correctamente (lo partes en pedacitos pequeños, y cada pedacito tiene un deber muy específico y único:
<li>
<ul>puedes ''debuguear'' tu programa más fácilmente. </ul>
<ul> Es menos probable que cometas uno de esos ''bugs lógicos'' </ul>
<ul> ¡y te ahorras trabajo! porque puedes reusar tu código en vez de escribirlo una y otra vez... </ul>
</li>
----
'''El Desvocalizador'''
''NIVEL: fácil
(no es de un juez virtual)''
El científico malvado Vans Doofenshmirtz, cree que los niños odian las vocales, porque les obligan a repetirlas una y otra vez en la escuela, así que cree que destruyendo las vocales de todos los textos del área limítrofe, causará que todos los niños lo adoren, y podrá hacer un ejército de niños que le ayudarán a conquistar toda el área limítrofe!
Para eso, quiere crear el desvocalizador, y necesita tu ayuda... ¡quita todas las vocales de una cadena de texto!
'''Mensajes Ocultos'''
Algunos textos contienen mensajes ocultos, en este problema un mensaje oculto se compone de la primera letra de las palabras de un lote de palabras. por ejemplo:
compete online design event rating
el mensaje oculto es: coder
==== Intermedio ====
'''Concursos por SMS'''
Los números de los concursos donde uno envia mensajes de texto son de 4 dígitos.
Una empresa desea contratar un número de acuerdo a su sigla, por ejemplo, La Universidad Mayor de San Andrés desea el número UMSA. La compañía de celulares le ha pedido que haga un programa para determinar si una sigla está disponible.
En su celular (si tiene teclas del 0 a 9) puede observar que la asignación de teclas es como sigue:
abc = 2, def = 3, ghi = 4, jkl = 5, mno = 6, pqrs = 7, tuv = 8, wxyz = 9.
Nivel 1: Para una sigla de 4 letras, hacer un algoritmo que de como resultado su número de concurso.
Nivel 2: Para un lote de n números de 4 dígitos, verificar si el número de la empresa está disponible.
Ejemplo:
umsa 8672
n = 3
2222, 3547, 8672 no disponible
<hr/>
'''Cercas'''
Llamamos cerca a una sucesión de caracteres que contienen los símbolos | y - en forma alternada.
Ejemplos:
|-|-|- es una cerca de dimensión 6
-|-|-|-|- es una cerca de dimensión 9
|--||- no es una cerca por que los símbolos no estan alternados
Dada una cadena representada por - y |, encontrar la subcadena mas larga que sea una cerca, devolver su longitud.
<br/>Por ejemplo, la cadena:
|-|-----|-|-|-|-|||-
posee a la subcadena:
-|-|-|-|-|
y ésta es una cerca de longitud 10
==== Difíciles ====
fe0c888a11f1ae7435eec71340abe7c629f66f84
Primer nivel de programación
0
17
107
85
2014-03-16T14:20:50Z
190.109.225.254
0
/* Fáciles */
wikitext
text/x-wiki
== Problemas Propuestos ==
=== [[Algoritmos Secuenciales]] ===
==== Difíciles ====
'''Manecillas del reloj'''
''(UVA-579-ClockHands, resuelto hasta el nivel 3 + god-like)''
¡Apuesto a que sabes cómo funcionan los relojes analógicos! Como seguramente ya sabes, los relojes analógicos tienen 3 manecillas que giran al rededor de un eje: la horera, la minutera y la segundera, estas manecillas están sujetadas al centro de un círculo. El círculo está dividido en 12 segmentos iguales enumerados del 1 al 12, donde el 12 está al medio del circulo, en la parte superior, y el 3 está en medio del círculo, en la parte derecha. Cada manecilla se mueve a un ritmo distinto: la horera gira 1/12 cada hora, la minutera gira 1/12 cada 5 minutos, y la segundera gira 1/12 cada 5 segundos.
Las manecillas del reloj giran y giran, y, a cada posición por la que pasan las agujas, le corresponde una hora específica. Para este problema (NIVEL 1, 2 y 3), asumiremos que la horera permanece en el número de su hora hasta que la minutera esté en el minuto 00 (es decir, hasta que la minutera esté exactamente en el número 12). Así, si te digo "5 horas y 30 minutos", la horera estará exactamente en el número 5, y la minutera estará exactamente en el número 6.
En el medio de la minutera y la horera, a cualquier hora, se forma un ángulo. Dada cierta hora ''h'' y ''m'' minutos, tu deber es:
NIVEL 1 (fácil): imagina que hay una línea vertical partiendo el reloj en dos, cuál es el ángulo que forma la horera con la línea vertical? cuál es el ángulo que forma la minutera con la línea vertical? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 2 (medio): Cuál es el ángulo que forman las manecillas del reloj entre sí? (existen dos ángulos, muestra cualquiera de ellos).
NIVEL 3 (difícil): Cuál es el ángulo más pequeño que forman las manecillas del reloj entre sí? (de los dos ángulos del NIVEL 2, muestra el más pequeño de ellos).
GOD-LIKE: Hasta ahora, tu programa puede encontrar el ángulo entre las manecillas del reloj, pero estamos contando con que la horera está "saltando" en vez de moverse suavemente. Modifica tu programa para que lea el ángulo entre las agujas cuando la horera no está "saltando", sino que se mueve suavemente. Por ejemplo: a las 8:30, la minutera está en el 6 y la horera está justo al medio del 5 y del 6. '''(Si resuelves el problema hasta este nivel, ya no es necesario que escribas la solución al nivel 1, 2 y 3!!! pero si no puedes resolver este problema en GOD-LIKE, tendrás que escribir la solución de los niveles 1, 2 y 3)'''
HINT: ¿Tienes problemas para formular una expresión matemática que te diga cuántos grados hay entre las dos agujas? pregúntale a tu docente de MAT-125: Análisis Matemático, o a tu auxiliar de INF-111.
----
'''Crafting in Minecraft''' [[Archivo:minecraft-pickaxe.png|thumb|crafting in minecraft!]]
Minecraft es un juego desarrollado por Notch en Java utilizando OpenGL. Cuando juegas Minecraft, estás en un mundo hecho de cubitos, puedes tomar cubitos, cada vez que tomas un cubito, éste se guarda en tu inventario. Con los cubitos de tu inventario, puedes construir cosas colocando los cubitos en donde quieras (cosas como casas, estatuas, monumentos, hay quienes, incluso construyen réplicas de ciudades!). Pero también puedes hacer items con los cubitos de tu inventario (puedes hacer espadas, picotas, hachas, palas, mesas, camas, hechizos, estufas, armaduras, etc...), como se muestra en la figura.
Lo más divertido de Minecraft es que puedes entrar a cuevas, y buscar oro, hierro y diamantes (que son muy difíciles de encontrar), pero para recolectar todo este mineral (y también para romper la piedra que lo cubre) necesitas muchas picotas, porque si usas mucho una picota, se te rompe! y tienes que usar una nueva para continuar minando.
Para construir una picota, necesitas 2 palitos y 3 piedras (como en la imagen).
Estás por entrar a una cueva, y necesitas saber cuántas picotas puedes construir para planificar correctamente tu aventura. Si tienes ''x'' palitos y ''y'' piedras...
a) ¿Cuántas picotas puedes construir?
b) ¿Te sobra material?
c) ¿Cuánto material te sobra?
[[Respuestas a Crafting in Minecraft]]
==== Fáciles ====
'''Pizza, Videojuegos y ROCK'N'ROLL!!'''
Tú y ''n'' amigos están participando en el Global Game Jam de Bolivia. El Global Game Jam es un concurso en el que tienes que hacer un juego en un fin de semana completo! comienza el viernes a las 5:00 pm, y termina el domingo a las 5:00 pm, el viernes a las 4:45 se da a conocer un tema, y todos los equipos que participan deben hacer un juego que tenga que ver con ese tema.
Tú y tus ''n'' amigos han decidido amanecerse el primer día, porque saben que el tiempo no les alcanzará, así que, para cenar, piden una pizza redonda de radio ''r'', tus amigos hicieron un robot llamado Robby que parte una pizza, para su proyecto de INF-112: Organización de Computadoras, lamentablemente, se le borró la memoria, y ya no recuerda cómo partir la pizza...
a) Ayuda a robby ingeniando un algoritmo que, dado un número ''n'' de amigos, y un radio ''r'' de pizza, le diga a robby cuánta pizza le tocará a cada uno de tus amigos (es decir, el área del trozo de pizza que le toca a cada amigo).
b) Dile a robby cuántos grados tiene cada trozo de pizza.
----
'''Sombras'''
La sombra que proyecta una estatua de ''a'' metros sobre el suelo, mide ''b'' metros. ¿Cuál es el ángulo del sol respecto al suelo de la estatua?
----
'''Álgebra Lineal'''
<nowiki>
ax + by = c
dx + ey = f </nowiki>
Haz un algoritmo que, dados a, b, c, d, e y f, te diga para qué valores de ''y'' y ''x'' el sistema de ecuasiones se cumple.
----
'''El Hombre Que Calculaba'''
Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor '''brasileño''' matemático conocido como Malba Tahan) es un genio matemático capaz de resolver acertijos muy complicados... Está pasando por una granja de camellos que están en un cobertizo de madera. El cobertizo está totalmente cubierto, de tal forma que no se puede ver lo que hay adentro, pero hay una ranura en el piso, así que se pueden ver las patas de los camellos. Solo con saber cuántas patas de camellos hay, Beremiz Samir puede saber cuántos camellos hay en el cobertizo.
¿Puedes hacer lo mismo? haz un algoritmo que, dado un número ''n'' múltiplo de 4, te diga cuántos camellos hay en el cobertizo. (Puedes asumir que ningún camello está cojo).
=== [[Algoritmos Condicionados]] ===
==== Difíciles ====
'''Escuelas en USA'''
La educación en los colegios de Estados Unidos es muy mala. Hay escuelas que se dedican a darles a los niños "roles" de acuerdo a sus capacidades, y no de acuerdo a sus sueños y aspiraciones... de esta forma, los docentes se dan la tarea de clasificar a los niños en distintos paralelos de acuerdo a sus promedios y sus logros en las distintas materias que cursan. Suelen darle mayor prioridad a los niños deportistas... ¡ellos creen que el deporte es sumamente importante!
Los estudiantes cursan estas materias:
Computación (com), Historia (his), Química (chem), Filosofía (phi), Educación Física (sport), Matemática (mat), Física (fis) y Biología (bio).
Dado el promedio de un niño en cada una de estas materias, tu deber es hacer un algoritmo para clasificar a los niños en paralelos.
(Se considera que un niño tuvo un buen promedio en la materia ''x'', si x >=80)
'''NIVEL 1:''' Clasifica a los niños en 4 paralelos: A, B, C y D de acuerdo a su promedio:
A: promedio mayor que 80.
B: promedio mayor que 70.
C: promedio mayor que 60.
D: el resto...
'''NIVEL 2:''' Los paralelos están divididos en: A para ciencias sociales, B para ingenierías, C para ciencias investigativas, D para ciencias médicas, E para el departamento de limpieza y F para los estudiantes más importantes.
Y estos son los criterios de selección:
A (Ciencias Sociales): Tener un buen promedio en historia, y haber aprobado filosofía y educación física.
B (Ingenierías): Tener un buen promedio en matemática, física y computación, y haber aprobado todas las materias (excepto historia, que no importa si no aprueban).
C (Ciencias Investigativas): Tener un buen promedio en filosofía, matemática, física, computación y química, y haber aprobado todas las materias.
D (Ciencias Médicas): Tener un buen promedio en química y biología.
F (estudiantes más importantes): Tener 100 en física, y haber reprobado todas las demás materias (obligatoriamente).
E (Departamento de limpieza): el resto...
----
'''Camellos cojos?!'''
En uno de los ejercicios anteriores, Beremiz Samir (el protagonista del libro El Hombre Que Calculaba, escrito por un profesor brasileño matemático conocido como Malba Tahan) pasó por una granja de camellos que estaba en un cobertizo de madera. El cobertizo estaba totalmente cubierto, de tal forma que no podía ver lo que hay adentro, pero como había una ranura en el piso, podía ver las patas de los camellos.
Pero Beremiz Samir está confundido, porque contó ''n'' patas, pero ''n'' resultó no ser divisible entre 4. Intrigado por esto, pensó que podrían haber camellos cojos... Beremiz Samir sabe que todos los camellos están de pie, no hay ninguno tirado en el suelo, por lo que concluye que los camellos TIENEN que tener 3 ó 4 patas cada uno.
Beremiz Samir quiere saber cuántos camellos cojos hay en el cobertizo, pero sabe que es imposible conocer el número de camellos cojos contando únicamente el número de patas que hay, así que habre un agujero en la parte superior del cobertizo, y ahora, Beremiz Samir puede contar las cabezas de los camellos.
Haz un algoritmo que, dado el número de patas de camello ''n'' que hay, y dado el número de cabezas de camello ''c'' que hay en el cobertizo, te diga cuántos camellos cojos hay en el cobertizo. Si el número de patas no coincide con el número de cabezas, muestra: "Beremiz: ¡contaste mal!"
==== Fáciles ====
''' Operadores relacionales '''
<p>Se leen dos números A, B en los cuales existen tres casos posibles, A sea mayor que B, A sea menor que B y A sea igual a para cualquiera de estos casos imprimir el símbolo que corresponda, ya sea “>”, “<” o “=”.</p>
----
'''Juego de Tronos'''
''no es de un juez en línea''
Los Lannister son una casta que gobierna un imperio, se sabe que cuando un Lannister tiene un hijo con otro Lannister, este niño sale con su cabello rubio (justo como el de sus padres).
Recientemente se ha descubierto que los genes de las personas rubias son recesivos, y por lo tanto, cada vez que un rubio procrea con alguien que no es rubio, es muy probable que su hijo no salga rubio.
La casta Lannister, por otra parte, es una casta muy peculiar, porque siempre que un Lannister procrea con cualquier otra persona que no sea Lannister, su hijo nace de pelo oscuro.
Ned Stark te dirá el apellido de una mujer, y el apellido de un hombre, y necesita que le digas si el hijo de esta pareja tendrá su cabello rubio o si lo tendrá oscuro.
=== [[Algoritmos Iterativos]] ===
==== Difíciles ====
'''El Problema de 3n +1'''
<nowiki>
1. leer n
2. mostrar n
3. if n == 1 entonces parar
4. if n es impar
n = 3 * n + 1
5. else
n = n / 2
6. ir a 2 </nowiki>
Si n = 22 entonces la salida será 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1.
Se sabe que el algoritmo anterior se terminará (cuando se imprime un 1). A pesar de la simplicidad del algoritmo, se desconoce si esta conjetura es cierta. Se ha comprobado, sin embargo, para todos los enteros n tal que 0 < n <1000000.
Dado n, es posible determinar el número de números impresos (incluyendo el 1). Para un n dado esto se llama el ciclo de longitud de n. En el ejemplo anterior, la longitud de ciclo de 22 es 16.
Para cualquiera de los dos números a y b determinar la longitud de ciclo máximo sobre todos los números entre a y b.
==== Fáciles ====
'''El Ferrocarril de La Paz'''
Nela es una niña muy juguetona, y le gusta jugar con sus hermanos y amigos cuando sale de colegio, le gusta mucho jugar el juego del ferrocarril, se juega así: Los niños se agarran de sus hombros formando un trencito, mientras cantan "El ferrocarril carril carril. Que va hacia La Paz La Paz La Paz. Un paso pa trás pa trás pa trás".
Mientras cantan, van dando pasos, pero no siempre caminan hacia el frente, al final de la canción, caminan hacia atrás. Esta es la forma en la que caminan:
Canción: El Ferro - carril - carril - carril
Pasos: 1 1 1 1
Canción: Que va hacia - La Paz - La Paz - La Paz
Pasos: 1 1 1 1
Canción: Un paso - pa' trás - pa' trás - pa' trás
Pasos: -1 -1 -1 -1
Si parten de un punto A, a cuántos pasos del punto A estarán los niños luego de haber dado ''n'' pasos?
==== Series ====
===== Difíciles =====
'''Números Primos'''
''(No está en los jueces virtuales)''
Un número primo es aquel que puede ser dividido (únicamente) entre él mismo y y entre 1.
2 3 4 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97 101 ...
son ejemplos de números primos.
NIVEL 1: Escribe un programa que verifique si un número es primo o no.
NIVEL 2: Seguramente haz escuchado de los BitCoins. El BitCoin es una moneda virtual que surgió en la Deep Web, y suelen usarla para comprar cosas en el Internet (parecido a una tarjeta de crédito). Muchos países prohiben el comercio con BitCoins, porque son muy usados para compras ilegales y lavado de dinero.
El BitCoin fue inventado por un matemático (??). Para asegurarse de que cada BitCoin sea único, cada BitCoin se identifica con un número primo grande (muy grande). Como sabes, dentro de más grande sea un número primo, más difícil es de encontrar (porque aparecen cada vez de forma menos frecuente en la recta de los números enteros). Sin embargo, aún existen personas que se dedican a "minar" BitCoins... ¿cómo minan los bitcoins? ¡tienen una supercomputadora que se encarga de buscar nuevos números primos grandes!
Escribe un programa que, dados dos números enteros positivos a y b, te diga cuántos BitCoins habrías minado si hubieras buscado dentro de este rango.
GOD-LIKE: Los números primos también tienen aplicaciones en la criptografía. Hay un método utilizado por Tor (un navegador web que te permite abrir páginas .onion, y de esa forma navegar en la Deep Web), y por CriptoCat (un cliente de chat de seguridad baja que encripta conversaciones por chat). El método es (más o menos) así: a un usuario se le identifica con un número primo ''a''... a otro se le identifica con otro número primo ''b'', y los mensajes que se envían entre sí, se encriptan utilizando como seed el número a*b. El número a*b es, únicamente, divisible entre ''a'' y ''b''.
Escribe un programa que:
a) dado un número ''x'', te diga si este número ''x'' podría ser el seed de un mensaje encriptado.
b) Una vez verificado que el número ''x'' podría ser el seed del mensaje, que descifre quiénes son ''a'' y ''b''.
c) Si el número ''x'' no es el seed de un mensaje encriptado, escribe <code>"p4rty p00p3r!!"</code>.
'''Si encuentras la solución para GOD-LIKE, ya no hace falta que escribas la solución para el nivel 1 y 2. Si no encuentras la solución para GOD-LIKE tienes que resolver el nivel 1 y 2'''.
----
'''Números Fibonacci'''
Los números Fibonacci se obtienen de la siguiente manera: Se comienza con dos unos al principio:
1 1
La suma de estos dos números da 2:
1 1 2
La suma de los últimos dos números de la serie da 3:
1 1 2 3
La suma de los últimos dos números de la serie da 5:
1 1 2 3 5
Y podrías continuar así hasta el infinito:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ...
NIVEL 1: Haz un algoritmo que genere los primeros ''n'' números fibonacci.
NIVEL 2: La intersección entre la secuencia de números fibonacci y la secuencia de números primos no es un conjunto vacío. Sin embargo, han descubierto que conforme la secuencia fibonacci avanza, es más difícil que salga un número primo. A pesar de que han encontrado números primos fibonacci extremadamente grandes, nadie ha podido demostrar que los números primos fibonacci son infinitos (pero alguien ya demostró que los números primos son infinitos, pregúntale a tu auxiliar o a tu docente de MAT-125 al respecto).
Escribe un algoritmo para generar los primeros ''n'' números primos fibonacci.
NIVEL 3: ¡Los números fibonacci son geniales! ¿escuchaste hablar del número áureo? es un número que está presente en todos los fractales que puedes encontrar aquí, en la Tierra... por ejemplo: si mides tu brazo (desde el codo hasta el hombro), y luego mides tu antebrazo (desde el codo hasta la muñeca), y divides estos dos números, te va a dar el número áureo. Si mides la longitud de cada espiral de la caracola de un caracol, también te dará el número áureo. El número áureo está escondido en las espirales de los conos de los pinos, en el centro de los girasoles, ¡el número áureo está en tu cara! (en serio):
<nowiki> medidaDelBrazo/medidaDelAntebrazo = numeroAureo =
1.618033988749894848204586834365638117720309179805762
86213544862270526046281890244970720720418939113748475 </nowiki>
''FUENTE: http://oeis.org/A001622/constant''
Bueno... el número áureo (también conocido como proporción de oro, "golden ratio" en inglés), es casi igual a 1.618
¿Pero qué tiene que ver todo esto con la serie fibonacci? dicen que si divides el i-ésimo +1 término dentro del i-ésimo término, el número resultante debería oscilar entre 0.5 y 0.7, lo cual es muy cercano al valor del número áureo (de hecho, dentro de más grandes sean los números fibonacci, más se acercan al número áureo.
Escribe un algoritmo que verifique con los primeros ''n'' números fibonacci, si es verdad lo que te acabo de decir.
GOD-LIKE: Otra característica interesante de los números fibonaccis es:
<nowiki>
ÍNDICE: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
SECUENCIA FIBONACCI: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ... </nowiki>
El 3er término de la serie fibonacci es 2, entonces, el 3ero, 6to, 9no, 12vo, 15vo, 18vo, 21vo, ... término de la serie fibonacci, serán divisibles entre el 3er término de la serie fibonacci (que es 2).
El 8vo término de la serie fibonacci es 21... entonces, el 8vo, 16vo, 24vo, ... término de la serie fibonacci serán divisibles entre el 8vo término de la serie fibonacci (que es 21).
el iésimo término de la serie fibonacci es n... entonces los: iésimo, iésimo*2, iésimo*3, iésimo*4 ... términos de la serie fibonacci serán divisibles entre el iésimo término de la serie fibonacci, que es n.
Realiza un algoritmo para verificar que lo que te dije es verdad con los primeros ''k'' números fibonacci.
===== Fáciles =====
'''Números múltiplos de ''a'' '''
a) Dado un número ''a'' y otro número ''n'', genera la serie de los primeros ''n'' números múltiplos de ''a''
b) genera la serie de todos los números múltiplos de ''a'' que se encuentren entre el rango [b, c]
----
'''Serie Geométrica''' [[Archivo:Serie-geometrica.svg|thumb|200px]]
La serie geométrica, es una serie de números en la que se comienza con un número r. Se llama geométrica, porque cada número representa el área de un cuadrado.
<nowiki>Serie Geométrica de r: 1/r, 1/r^2, 1/r^3, 1/r^4</nowiki>
Dado un número ''r'', generar su serie geométrica.
==== Sumatorias ====
===== Difíciles =====
===== Fáciles =====
'''Suma de Impares'''
''UVA: 10783-Odd Sum''
Haz un programa que, dado un rango [a, b], encuentre la suma de todos los números impares dentro de este rango.
''NIVEL: Súper-fácil.''
Por ejemplo: si el rango es [3, 9], la suma de todos los números impares entre 3 y 9 es:
3 + 5 + 7 + 9 = 24
----
'''Factorial'''
¡Los programadores odiamos esta operación matemática!
El factorial de un número ''x'' se expresa así: <code><nowiki>x!</nowiki></code>, y para calcularlo, tienes que multiplicar entre sí todos los números desde el 1 hasta el ''x'', así:
15! = 1*2*3*4*5*6*7*8*9*10*11*12*13*14*15
Esto va a dar un número enorme! y es por eso que los programadores odiamos esta operación. Pero aunque lo odiemos, esta operación matemática es muy importante en probabilidades y en técnicas de conteo... Haz un algoritmo que calcule el factorial de un número.
----
'''Carl Friederich Gauss'''
Gauss era un niño superdotado... un genio en las matemáticas. Nació en una granjita, sus padres eran pobres e iletrados, y su mamá ni siquiera registró la fecha de nacimiento de Gauss, Gauss no sabía su cumpleaños (pero lo descifró, años más tarde, con matemática).
Gauss tuvo suerte porque el Duque de Brunswick vio su talento, y le financió sus estudios. Cuando aún era niño, en la escuela, su profesor les pidió que calcularan la suma de todos los números del 1 al 100, Gauss terminó más rápido que todos sus compañeros, porque se dio cuenta que:
1 + 2 + 3 + 4 + ... + 100 == 100 + 99 + 98 + 97 + ... + 1.
Entonces...
(1 + 100) + (2 + 99) + (3 + 98) + (4 + 97) ... + (100 + 1) = 101 + 101 + 101 + 101 + ... + 101 = 100(101).
Y por lo tanto:
1 + 2 + 3 + 4 + ... + 100 = (100 * (100 + 1)) / 2.
El profesor de Gauss quiere verificar que la fórmula es correcta. Escribe un algoritmo iterativo que sume los números del 1 al ''n'' y muestre el resultado.
e68a2f35088522347aeacfc0dcf41b3689101b13
Needs To reside In Virginia Beach
0
20
108
2015-07-03T02:26:44Z
104.227.167.242
0
Página creada con «<br><br>Initially, check with your regular veterinary hospital. Some centers still cover their own emergencies though numerous decide to use an emergency situation clinic....»
wikitext
text/x-wiki
<br><br>Initially, check with your regular veterinary hospital. Some centers still cover their own emergencies though numerous decide to use an emergency situation clinic. There are benefits to both techniques. With your own clinic, the physician has your animal's medical records available right there. It might be easier to arrange payments with a clinic you have a routine relationship with - they understand you. Drawbacks are that the medical professional might be being available in exhausted and the clinic is not fully staffed after hours.<br><br>Numerous vendors were at the occasion including Too Sugary food Bakeshop and Blue Buffalo. Blue Buffalo is a supplier of all natural pet dog food and deals with if you are not familiar with them. Their unique brand of animal food is available in Petsmart and Petco and online through their website. Their line of pet food is suggested to be a much healthier option. Their food products consist of vitamins, minerals as well as glucosamine to assist with chronic health issues and allergies. They utilize no meat by-products, soy, wheat, corn, artificial colors or preservatives in their food.<br><br>Liberty's injuries were rather substantial and the expense of surgical treatment was roughly $5,000. Dr. Stephen Neihaus, of Chicago [https://www.youtube.com/watch?v=ctKYEamycXo emergency vet virginia beach] & Specialized Center, offered his effort and time to offer Liberty with prompt medical interest. He was able to decrease the cost of the puppy's surgery to $1,500, which covered medical implants and anesthesia. In addition to volunteering his efforts and medical space, Dr. Neihaus was likewise able to discover a confidential donor who paid the remaining expense of the surgery.<br><br>Raising Walking cane, which has actually successfully been held in 24 hours vet virginia beach for the previous two years, is enjoyable for both the participants and the audiences, stated CCEVA director of development Jessica Lombardi. The individuals can let their creativities run wild as they turn ordinary canes into masterpieces, and audiences will certainly marvel at the artists' ingenuity. The designs have run the gamut, from a walking stick that was transformed into a blue heron to a queen cane that was painted in 24-karat gold and had numerous items, including a gold shoe, a handbag [http://xn----8sbedlakhe2axia9aoh6n.xn--p1ai/user/MaisieRubinstein/ pet vets] and sunglasses, Lombardi said.<br><br>Many people don't have medical insurance for their animals or rainy day cash set aside to cover a veterinary emergency. Even before the present recession, that was bad news for our country's animals. Under present conditions, a lot of individuals don't have the funds to spend for their pets' basic medical needs, let alone a deadly disease or injury. So exactly what can you do if you can't afford your pet's required treatment?<br><br>Kellogg's Raisin Bran: Raisin Bran may not look like a "sugary" kid's cereal, however it includes 17.6 grams of sugar and 342 mg of sodium. That's more sugar and salt than a Milky Method bar!<br><br>Holiday Treats, alcoholic drinks, rich, fatty foods and bones can be poisonous or damaging to your animals. Keep your animal on his/her regular diet plan and caution visitors against providing your pet any "special treats". Watch the hot containers and pots from the range. Hot Turkey and ham drippings can trigger serious scalding and burns. With hold from feeding those same, cooled drippings. They can quickly cause upset to your pet's digestion system.
6dda6e3e51718da22505d1b6c5e88b1fe9cb4b0a